Return to VBA Code Examples

Excel VBA – Speichern (Drucken) als PDF

In diesem Tutorial zeigen wir Ihnen, wie Sie in Excel/VBA ein Blatt in ein PDF-Dokument speichern/drucken können.

In PDF drucken

Diese einfache Prozedur druckt das Aktuelle Blatt (ActiveSheet) in eine PDF-Datei.

Sub EinfachesDruckenInPDF()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="demo.pdf", Quality:=xlQualityStandard, _
  IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Ich habe auch eine Funktion mit Fehlerbehandlung usw. erstellt, die das ActiveSheet in eine PDF-Datei druckt:

Sub DruckenInPDF()
    Call PDF_Speichern
End Sub

Function PDF_Speichern() As Boolean ' Kopiert Blätter in eine neue PDF-Datei für den E-Mail-Versand
    Dim DiesesBlatt As String, DieseDatei As String, PfadName As String
    Dim SpeichernAls As String

Application.ScreenUpdating = False

' Dateinamen zum Speichern abrufen
    DiesesBlatt = ActiveSheet.Name
    DieseDatei = ActiveWorkbook.Name
    PfadName = ActiveWorkbook.Path
    SpeichernAls = PfadName & "\" & DiesesBlatt & ".pdf"

'Druckqualität einstellen
    On Error Resume Next
    ActiveSheet.PageSetup.PrintQuality = 600
    Err.Clear
    On Error GoTo 0

' Benutzer anweisen, wie er senden soll
    On Error GoTo RefLibFehler
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SpeichernAls, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
    On Error GoTo 0

NurSpeichern:
    MsgBox "Eine Kopie dieses Blattes wurde erfolgreich als .pdf-Datei gespeichert: " & vbCrLf & vbCrLf & SpeichernAls & _
        "Überprüfen Sie das .pdf-Dokument. Wenn das Dokument NICHT gut aussieht, passen Sie Ihre Druckparameter an und versuchen Sie es erneut."
        
    PDF_Speichern = True
    GoTo EndMacro
    
RefLibFehler:
    MsgBox "Kann nicht als PDF gespeichert werden. Referenzbibliothek nicht gefunden."
    PDF_Speichern = False
EndMacro:
End Function

Die Funktion gibt TRUE oder FALSE zurück, wenn der Druck in PDF erfolgreich war oder nicht.

Funktion zum PDF speichern und per E-Mail versenden

Diese Funktion speichert das aktuelle Blatt (ActiveSheet) als PDF und hängt das PDF (optional) an eine E-Mail an (vorausgesetzt, Sie haben Outlook installiert):

Sub PDF_Speichern_Test()
    Call PDF_Senden("Email senden")
End Sub

Function PDF_Senden(Optional Aktion As String = "NurSpeichern") As Boolean ' Kopiert Blätter in eine neue PDF-Datei zum Versenden per E-Mail
    Dim DiesesBlatt As String, DieseDatei As String, PfadName As String
    Dim SpeichernAls As String

Application.ScreenUpdating = False

' Dateinamen zum Speichern abrufen
    DiesesBlatt = ActiveSheet.Name
    DieseDatei = ActiveWorkbook.Name
    PfadName = ActiveWorkbook.Path
    SpeichernAls = PathName & "\" & DiesesBlatt & ".pdf"

'Druckqualität einstellen
    On Error Resume Next
    ActiveSheet.PageSetup.PrintQuality = 600
    Err.Clear
    On Error GoTo 0

' Benutzer anweisen, wie er senden soll
    On Error GoTo RefLibFehler
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SpeichernAls, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
    On Error GoTo 0
    
' E-Mail senden
    If action = "Email senden" Then
        On Error GoTo NurSpeichern
        Set olApp = CreateObject("Outlook.Application")
        Set olEmail = olApp.CreateItem(olMailItem)
        
        With olEmail
            .Subject = DiesesBlatt & ".pdf"
            .Attachments.Add SpeichernAls
            .Display
        End With
        On Error GoTo 0
        GoTo EndMacro
    End If

NurSpeichern:
    MsgBox "Eine Kopie dieses Blattes wurde erfolgreich als .pdf-Datei gespeichert: " & vbCrLf & vbCrLf & SvAs & _
        "Überprüfen Sie das .pdf-Dokument. Wenn das Dokument NICHT gut aussieht, passen Sie Ihre Druckparameter an und versuchen Sie es erneut."
        
    PDF_Senden = True
    GoTo EndMacro
    
RefLibFehler:
    MsgBox "Konnte nicht als PDF gespeichert werden. Referenzbibliothek nicht gefunden."
    PDF_Senden = False
EndMacro:
End Function

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples