PDF Drucken mit VBA in Excel
Schritt-für-Schritt-Anleitung
Um mit VBA in Excel PDF-Dokumente zu drucken, folge diesen Schritten:
-
Öffne den VBA-Editor: Drücke ALT + F11
in Excel.
-
Füge ein neues Modul hinzu: Rechtsklicke auf "VBAProject (DeineArbeitsmappe)", wähle „Einfügen“ und dann „Modul“.
-
Füge den folgenden Code ein:
Private Declare Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long _
) As Long
Sub prcPrint_PDF()
Dim strPath As String
Dim FSO As Object, F1 As Object
strPath = Tabelle1.Range("B1")
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO = FSO.Getfolder(strPath)
If Not MsgBox(FSO.Files.Count & " Dateien werden auf den Standard-/Default-Drucker ausgegeben.", _
vbInformation + vbYesNo) = vbYes Then Exit Sub
For Each F1 In FSO.Files
If LCase(CStr(F1.Path)) Like "*.pdf" Then
ShellExecuteA 0, "Print", F1.Path, vbNullString, vbNullString, 0
End If
Next F1
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Definiere den Pfad in einer Zelle (z.B. B1) der Tabelle, in der die PDFs gespeichert sind.
-
Führe das Makro aus: Gehe zu „Entwicklertools“ > „Makros“ und wähle prcPrint_PDF
aus.
Wenn du den Doppelklick-Befehl einfügen möchtest, kannst du den Code in das entsprechende Arbeitsblattmodul kopieren.
Häufige Fehler und Lösungen
-
Fehler: „pdf nicht druckbar“
Stelle sicher, dass der Pfad zur PDF-Datei korrekt ist und die Datei existiert.
-
Fehler: „pdf druck gesperrt“
Überprüfe, ob die Datei passwortgeschützt ist. In diesem Fall musst du ein Tool verwenden, das passwortgeschützte PDFs drucken kann.
-
Fehler: Deklaration nicht erfolgreich
Die Private Declare
-Anweisung sollte direkt vor der Sub-Prozedur stehen. Achte darauf, dass die Syntax korrekt ist.
Alternative Methoden
-
Direktes Drucken über Adobe Reader: Du kannst das PDF manuell über Adobe Reader öffnen und drucken. Dies ist nützlich, wenn du nur gelegentlich eine PDF drucken möchtest.
-
Drucken mit PowerShell: Wenn du mehrere PDFs drucken möchtest, könntest du auch ein PowerShell-Skript verwenden.
Praktische Beispiele
-
PDF bestimmten Bereich drucken: Um nur einen bestimmten Bereich einer PDF zu drucken, benötigst du ein externes Tool oder eine entsprechende Funktion in deiner Drucksoftware.
-
Mehrere PDFs drucken: Der obige Code druckt alle PDFs im angegebenen Verzeichnis. Achte darauf, dass sie in der gewünschten Reihenfolge sind.
For Each F1 In FSO.Files
If LCase(CStr(F1.Path)) Like "*.pdf" Then
ShellExecuteA 0, "Print", F1.Path, vbNullString, vbNullString, 0
End If
Next F1
Tipps für Profis
-
Wartezeiten einfügen: Wenn du große Dokumente druckst, kann es hilfreich sein, eine Wartezeit (Sleep
) zwischen den Druckaufträgen einzufügen, um sicherzustellen, dass sie in der richtigen Reihenfolge verarbeitet werden.
-
Fehlerbehandlung: Füge eine Fehlerbehandlungsroutine in deinen Code ein, um unerwartete Fehler abzufangen, die während des Druckvorgangs auftreten können.
On Error GoTo ErrorHandler
' Dein Druckcode hier
Exit Sub
ErrorHandler:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
FAQ: Häufige Fragen
1. Wie kann ich passwortgeschützte PDFs drucken?
Um passwortgeschützte PDFs zu drucken, musst du sicherstellen, dass du das Passwort kennst oder ein Tool verwenden, das dies unterstützt.
2. Kann ich den Druckbereich anpassen?
Ja, um einen bestimmten Bereich einer PDF zu drucken, benötigst du jedoch spezifische Software-Funktionen, die über Excel hinausgehen. Excel selbst bietet keine Möglichkeit, den Druckbereich für PDFs festzulegen.