Speichern von Excel-Daten als PDF mit VBA
Schritt-für-Schritt-Anleitung
Um ein Excel-Dokument als PDF zu speichern, kannst Du ein VBA-Makro verwenden. Hier sind die Schritte:
-
Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.
-
Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
-
Füge folgenden Code in das Modul ein:
Option Explicit
Public Sub PDF_Export()
Dim vntReturn As Variant
Dim strDateiname As String
strDateiname = "Test.pdf" ' Hier kannst Du den gewünschten Dateinamen anpassen
vntReturn = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
If vntReturn <> False Then
Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=vntReturn, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True)
End If
End Sub
-
Schließe den VBA-Editor und gehe zurück zu Excel.
-
Um das Makro auszuführen, drücke Alt + F8, wähle PDF_Export und klicke auf Ausführen.
Mit diesem Makro wird ein Dialog angezeigt, um den Speicherort auszuwählen, und der Dateityp wird bereits auf PDF gesetzt.
Häufige Fehler und Lösungen
-
Dateityp PDF nicht vorhanden: Stelle sicher, dass Du die richtige Dateierweiterung im Filter angibst.
-
PDF speichern unter funktioniert nicht mehr: Überprüfe, ob die Excel-Version die Funktion unterstützt und ob die Datei nicht schreibgeschützt ist.
-
Leeres Dateinamensfeld: Wenn Du ein leeres Feld bekommst, vergewissere Dich, dass die Variable strDateiname korrekt gesetzt ist, bevor Du das Dialogfeld aufrufst.
Alternative Methoden
Anstatt die GetSaveAsFilename Methode zu verwenden, kannst Du direkt einen Pfad im Code angeben, um die PDF-Datei ohne Dialog zu speichern. Hier ist ein Beispiel:
Public Sub PDF_Speichern()
Dim strPfad As String
strPfad = "D:\Daten\Test.pdf" ' Hier den gewünschten Speicherort angeben
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPfad, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
Diese Methode ermöglicht das Speichern der Datei ohne Rückfragen.
Praktische Beispiele
-
PDF mit variablem Dateinamen speichern:
Public Sub PDF_Export_Variabel()
Dim vntReturn As Variant
Dim strDateiname As String
strDateiname = "Bericht_" & Format(Date, "YYYY-MM-DD") & ".pdf"
vntReturn = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
If vntReturn <> False Then
Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=vntReturn, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True)
End If
End Sub
-
PDF ohne Dialog speichern:
Public Sub PDF_Speichern_Ohne_Dialog()
Dim strPfad As String
strPfad = "C:\Users\DeinBenutzername\Documents\Bericht.pdf"
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPfad, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
Tipps für Profis
-
Nutze die OpenAfterPublish-Option nur, wenn Du die Datei sofort öffnen möchtest. Andernfalls setze sie auf False, um die Datei im Hintergrund zu speichern.
-
Um den Speicherort dynamisch festzulegen, kannst Du den Benutzer mit einem Input-Box-Feld nach dem gewünschten Pfad fragen.
-
Wenn Du häufig PDF-Dateien speicherst, erstelle eine benutzerdefinierte Menüleiste oder Schaltfläche, um den Zugriff auf Deine Makros zu erleichtern.
FAQ: Häufige Fragen
1. Wie kann ich den Datei-Pfad für die PDF-Datei festlegen?
Du kannst den Pfad im Code direkt angeben, z.B. strPfad = "C:\Users\DeinBenutzername\Documents\Dateiname.pdf".
2. Was mache ich, wenn ich die Datei ohne Bestätigung speichern möchte?
Entferne die GetSaveAsFilename Methode und verwende direkt ExportAsFixedFormat mit einem festgelegten Pfad.
3. Wie kann ich das PDF automatisch nach dem Speichern öffnen?
Setze die Option OpenAfterPublish auf True.