Convert a workbook (included all worksheets) to pdf and attached to an email
What This Macro Does:
Prompts for Email Address: Uses an InputBox to ask you for the recipient’s email address.
Cancels if No Email is Entered: If you don’t enter an email, it will show a message and exit the macro.
Converts Workbook to PDF: Saves the entire workbook as a PDF file in the same location as the workbook.
Prepares the Email: Creates a new email in Outlook with the PDF attached and uses the entered email address.
Displays the Email: Opens the email for review before sending. Change .Display to .Send if you want the email to be sent automatically.
This macro will now ask for the recipient’s email every time you run it.
—
GR
Πώς να μετατρέψεις ένα βιβλίο εργασίας Excel σε PDF και να το στείλεις αυτόματα μέσω email
✨ Εισαγωγή
Αν εργάζεσαι συχνά με αρχεία Excel, σίγουρα έχει τύχει να χρειαστεί να τα μοιραστείς γρήγορα με συναδέλφους ή πελάτες.
Αντί να μετατρέπεις χειροκίνητα κάθε αρχείο σε PDF και να το επισυνάπτεις σε email, μπορείς να το κάνεις αυτόματα με μία απλή μακροεντολή VBA.
Παρακάτω θα δεις πώς λειτουργεί αυτή η μακροεντολή και τι ακριβώς κάνει βήμα προς βήμα.
Τι κάνει αυτή η μακροεντολή
1. Ζητά τη διεύθυνση email του παραλήπτη
Κατά την εκτέλεση, εμφανίζεται ένα παράθυρο (InputBox) που σου ζητά να πληκτρολογήσεις τη διεύθυνση email του παραλήπτη.
2. Ακυρώνει τη διαδικασία αν δεν δοθεί email
Αν δεν εισαχθεί καμία διεύθυνση, η μακροεντολή εμφανίζει ενημερωτικό μήνυμα και σταματά αυτόματα τη λειτουργία της — ώστε να μην προκύψει σφάλμα.
3. Μετατρέπει ολόκληρο το βιβλίο εργασίας σε PDF
Η μακροεντολή αποθηκεύει όλα τα φύλλα εργασίας σε ένα ενιαίο αρχείο PDF, στον ίδιο φάκελο όπου βρίσκεται και το αρχικό αρχείο Excel.
✉️ 4. Δημιουργεί αυτόματα νέο email στο Outlook
Ανοίγει ένα νέο μήνυμα στο Outlook, επισυνάπτει το αρχείο PDF και εισάγει αυτόματα τη διεύθυνση email που πληκτρολόγησες.
5. Εμφανίζει το email πριν σταλεί
Το μήνυμα ανοίγει για προεπισκόπηση, ώστε να μπορείς να το ελέγξεις ή να προσθέσεις επιπλέον πληροφορίες.
➡️ Αν θέλεις να σταλεί αυτόματα χωρίς προεπισκόπηση, μπορείς να αλλάξεις την εντολή .Display σε .Send.
Σημείωση
Κάθε φορά που εκτελείς τη μακροεντολή, θα σου ζητά να εισάγεις τη διεύθυνση email του παραλήπτη.
Έτσι μπορείς να στέλνεις το ίδιο αρχείο σε διαφορετικούς παραλήπτες χωρίς να τροποποιείς τον κώδικα ή τις ρυθμίσεις.
Γιατί να τη χρησιμοποιήσεις
✅ Εξοικονομείς χρόνο
✅ Αποφεύγεις λάθη στην αποστολή αρχείων
✅ Διατηρείς σταθερή μορφή (PDF) για επαγγελματική παρουσίαση
Αν σου άρεσε αυτή η λύση, δοκίμασέ την στο επόμενο Excel project σου!
Μπορείς επίσης να την προσαρμόσεις ώστε να προσθέτει προκαθορισμένο θέμα, μήνυμα, ή να αποθηκεύει το PDF σε συγκεκριμένο φάκελο.
Macro VBA credit: Trifon Papadopoulos

Macro VBA
Sub ConvertWorkbookToPDFAndEmail()
Dim ws As Worksheet
Dim pdfFileName As String
Dim filePath As String
Dim OutApp As Object
Dim OutMail As Object
Dim recipientEmail As String
‘ Prompt user for recipient email
recipientEmail = InputBox(“Please enter the recipient’s email address:”, “Recipient Email”)
‘ Exit if no email is entered
If recipientEmail = “” Then
MsgBox “No recipient email entered. Operation canceled.”, vbExclamation
Exit Sub
End If
‘ Define the file path and name for the PDF
filePath = ThisWorkbook.Path & “\”
pdfFileName = filePath & ThisWorkbook.Name & “.pdf”
‘ Set all sheets to landscape, fit to one page wide, and add page numbers
For Each ws In ThisWorkbook.Worksheets
ws.PageSetup.Orientation = xlLandscape
ws.PageSetup.Zoom = False
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.FitToPagesTall = False ‘ This makes it adjust to the length of the content
‘ Add page numbers to the center of the footer
ws.PageSetup.CenterFooter = “Page &P of &N” ‘ &P = current page, &N = total pages
Next ws
‘ Export the entire workbook to a single PDF
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
‘ Create Outlook application object
Set OutApp = CreateObject(“Outlook.Application”)
Set OutMail = OutApp.CreateItem(0)
‘ Prepare email
With OutMail
.To = recipientEmail ‘ Use the email entered by the user
.CC = “”
.BCC = “”
.Subject = “Attached PDF of Workbook ” & “‘” & ThisWorkbook.Name & “‘”
.Body = “Please find attached the PDF version of the workbook ” & “‘” & ThisWorkbook.Name & “‘”
.Attachments.Add pdfFileName
‘ Display or send the email
.Display ‘ Change to .Send to send directly
End With
‘ Clean up
Set OutMail = Nothing
Set OutApp = Nothing
‘ Confirmation message
MsgBox “Workbook has been converted to a horizontal PDF with page numbering and attached to an email.”, vbInformation
End Sub
Comments are closed.