PDF Speichern mit VBA in Excel
Schritt-für-Schritt-Anleitung
Um in Excel VBA ein Arbeitsblatt als PDF zu speichern, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen. Diese Anleitung geht davon aus, dass Du Excel 2007 oder eine neuere Version verwendest.
-
Öffne Excel und gehe zu dem Arbeitsblatt, das Du speichern möchtest.
-
Öffne den VBA-Editor: Drücke ALT + F11
.
-
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)", wähle "Einfügen" und dann "Modul".
-
Füge den folgenden Code ein, um zwei Arbeitsblätter als PDF zu speichern:
Sub pdfSpeichern()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim pdfPfad As String
pdfPfad = "D:\PDF\"
Set ws1 = ThisWorkbook.Worksheets("Reservierung")
Set ws2 = ThisWorkbook.Worksheets("Rückbestätigung")
' Beide Blätter als PDF speichern
ws1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPfad & "Reservierung.pdf"
ws2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPfad & "Rückbestätigung.pdf"
End Sub
-
Speichere Deinen Code und schließe den VBA-Editor.
-
Führe das Makro aus: Gehe zu "Entwicklertools" > "Makros" und wähle pdfSpeichern
aus.
Häufige Fehler und Lösungen
-
Fehler: Speicherort nicht gefunden
- Lösung: Stelle sicher, dass der angegebene Speicherort (z.B. "D:\PDF\") existiert. Erstelle den Ordner gegebenenfalls manuell.
-
Fehler: Arbeitsblatt nicht gefunden
- Lösung: Überprüfe, ob die Arbeitsblätter genau so benannt sind, wie im Code angegeben ("Reservierung" und "Rückbestätigung").
-
Fehler: Zugriff verweigert
- Lösung: Überprüfe die Berechtigungen für den Zielordner. Stelle sicher, dass Du Schreibrechte hast.
Alternative Methoden
Falls Du eine andere Methode bevorzugst, kannst Du auch den Makrorekorder benutzen:
- Starte den Makrorekorder: Gehe zu "Entwicklertools" > "Makro aufzeichnen".
- Führe die Aktion aus, die Du speichern möchtest: Datei > Speichern unter > wähle PDF als Dateiformat.
- Beende die Aufzeichnung und schaue Dir den generierten VBA-Code an. Dieser kann als Grundlage für Deine eigenen Makros dienen.
Praktische Beispiele
Wenn Du ein spezifisches Arbeitsblatt oder einen Bereich als PDF speichern möchtest, kannst Du den Code entsprechend anpassen:
Sub bereichAlsPDFSpeichern()
Dim pdfPfad As String
pdfPfad = "D:\PDF\Bereich.pdf"
' Bereich A1:B10 als PDF speichern
ThisWorkbook.Worksheets("Tabelle1").Range("A1:B10").ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPfad
End Sub
Tipps für Profis
-
Dateinamen dynamisch gestalten: Du kannst den Dateinamen mit Datum und Uhrzeit versehen, um Überschreibungen zu vermeiden:
Filename:= pdfPfad & "Reservierung_" & Format(Now, "YYYYMMDD_HHMMSS") & ".pdf"
-
Druckbereich festlegen: Setze einen Druckbereich, bevor Du das PDF speicherst, um nur die relevanten Inhalte zu exportieren.
FAQ: Häufige Fragen
1. Frage
Wie kann ich mehrere Arbeitsblätter in einem einzelnen PDF speichern?
Antwort: Du kannst die ExportAsFixedFormat
-Methode auf die gesamte Arbeitsmappe anwenden:
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\PDF\Gesamt.pdf"
2. Frage
Kann ich den Benutzer nach dem Speicherort fragen?
Antwort: Ja, verwende dazu den Application.GetSaveAsFilename
-Dialog:
Dim pdfPfad As String
pdfPfad = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf")
If pdfPfad <> "False" Then
' Speichere hier das PDF
End If