PDF Datei per VBA erzeugen

Seit Excel 2007 können PDF-Dateien direkt aus Excel heraus erzeugt werden. Dazu muss die Datei einfach über die Funktion Speichern unter als PDF-Dokument abgespeichert werden.

Diese manuelle Arbeit lässt sich auch per VBA erledigen. Verwenden Sie dazu folgenden Code:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\TEMP\Testdatei.pdf" _
  , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
  :=False, OpenAfterPublish:=True

Damit wird die PDF-Datei mit dem Namen "Testdatei.pdf" im Verzeichnis C:\TEMP erzeugt.

Ab Excel 2010 steht ein weiteres schönes Feature zur Verfügung. Über das Menü Datei / Speichern und senden / Als PDF-Senden kann ein Arbeitsblatt, ein Tabellenausschnitt oder eine komplette Datei als PDF-Datei erzeugt und direkt per E-Mail versendet werden.

 

Auch diese Funktion lässt sich per VBA automatisiseren. Verwenden Sie dazu den folgenden Code:

Sub e_Mail()

'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object

'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)

'** PDF erzeugen
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  ThisWorkbook.Path & "\Excel-File.pdf", Quality:=xlQualityStandard _
  , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
  :=False

'** E-Mail versenden
strPDF = ThisWorkbook.Path & "\Excel-File.pdf"
With strEmail
  .To = "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein."
  .Subject = "PDF als Anlage" 'Betreffzeile
  .body = "Als Anlage die PDF-Datei"
  .Attachments.Add strPDF
  .Display
  '.Send 'Damit wir die E-Mail sofort versendet
  Kill strPDF
End With
  
'** Objektvariablen wieder löschen
Set OutlookApp = Nothing
Set strEmail = Nothing
End Sub

Damit wird die PDF-Datei in einem temporären Verzeichnis erzeugt. Anschließend wird in Outlook eine neue E-Mail erzeugt an welche die PDF-Datei bereits angehängt ist.

Die Beispieldatei kann über den folgenden Link herunter geladen werden.

 

Partnerlinks

Relevante Artikel

  • Drucken der Arbeitsmappe verhindern

    Mit Hilfe des folgenden VBA-Codes kann die Druckfunktion für eine gesamte Arbeitsmappe deaktiviert werden. Damit kann kein...

  • Anzahl der Druckseiten ermitteln

    Mit dem folgenden VBA-Code unter kann unter Verwendung eines Excel4Makros die Anzahl der Druckseiten ermittelt werden. Um...

  • Druckbereich per VBA festlegen

    Wenn nicht das komplette Tabellenblatt gedruckt werden soll, kann ein sogenannter Druckbereich definiert werden. Damit kann...

  • PDF Datei per VBA erzeugen

    Seit Excel 2007 können PDF-Dateien direkt aus Excel heraus erzeugt werden. Dazu muss die Datei einfach über die Funktion...

  • Alle vorhandenen Drucker auslesen

    106009 Das nachfolgende Makro schreibt alle vorhandenen, installierten Drucker auf das erste Sheet in einer Arbeitsmappe. Sie müssen...

Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.