PDF aus Excel drucken mit VBA
Schritt-für-Schritt-Anleitung
Um PDF-Dateien aus Excel im Hintergrund zu drucken, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Einfügen eines neuen Moduls:
- Klicke im Menü auf "Einfügen" > "Modul".
-
Kopiere den folgenden Code in das Modul:
Sub test()
Dim Datei As String
Datei = "C:\test.pdf"
Dim Ergeb As Long
Ergeb = Shell("C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe /p /h " & Datei, vbHide)
End Sub
-
Ändere den Dateipfad in der Zeile Datei = "C:\test.pdf" auf den Pfad Deiner PDF-Datei.
-
Führe das Makro aus, indem Du im VBA-Editor F5 drückst oder das Makro aus Excel heraus startest.
Häufige Fehler und Lösungen
-
Fehler: PDF drucken gesperrt
Möglicherweise hast Du keine Berechtigung, um auf die Datei zuzugreifen. Überprüfe die Dateiberechtigungen und den Pfad.
-
Lösung: Acrobat öffnet im Vordergrund
Verwende den angepassten Code mit /p /h, um sicherzustellen, dass Acrobat im Hintergrund bleibt:
Sub test()
Dim Datei As String
Datei = "C:\133.pdf"
Dim Ergeb As Long
Ergeb = Shell("C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe /p /h " & Datei, vbHide)
End Sub
Alternative Methoden
Falls Du keine VBA-Lösungen verwenden möchtest, kannst Du auch andere Tools oder Softwarelösungen in Betracht ziehen:
- Drittanbieter-Software: Es gibt Programme, die speziell für das Drucken von PDFs aus Excel entwickelt wurden. Diese bieten oft zusätzliche Funktionen.
- Online-Dienste: Einige Websites bieten die Möglichkeit, Excel-Daten in PDF-Dateien zu konvertieren, die Du dann drucken kannst.
Praktische Beispiele
Hier ist ein Beispiel, wie Du ein Excel-Makro zum Drucken von PDFs ohne Öffnen von Acrobat implementieren kannst:
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Const PROCESS_TERMINATE = &H1
Public lTaskID As Long
Sub Test()
Dim Datei As String
Datei = "C:\133.pdf"
lTaskID = Shell("C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe /p /h " & Datei, vbHide)
Application.OnTime Now + TimeValue("00:00:30"), "TaskBeenden"
End Sub
Sub TaskBeenden()
Dim hTask As Long
Dim lResult As Long
hTask = OpenProcess(PROCESS_TERMINATE, 0&, lTaskID)
lResult = TerminateProcess(hTask, 1&)
lResult = CloseHandle(hTask)
End Sub
Tipps für Profis
- Experimentiere mit den Zeitwerten in
Application.OnTime, um die Zeit anzupassen, in der Acrobat geschlossen wird.
- Achte darauf, den richtigen Dateipfad zu verwenden, um Fehler zu vermeiden.
- Nutze Kommentare im Code, um die Funktionsweise Deines Makros besser zu verstehen.
FAQ: Häufige Fragen
1. Wie kann ich mehrere PDFs hintereinander drucken?
Du kannst eine Schleife in Dein Makro einfügen, um mehrere PDF-Dateien nacheinander zu drucken.
2. Funktioniert das auch mit anderen PDF-Readern?
Das oben genannte Beispiel ist für Adobe Acrobat Reader. Für andere Reader musst Du möglicherweise die Befehlszeilenoptionen anpassen.