PDF-Datei drucken und schließen in Excel
Schritt-für-Schritt-Anleitung
Um eine PDF-Datei zu drucken und anschließend zu schließen, kannst du den ShellExecute Befehl in VBA verwenden. Hier sind die Schritte:
-
Öffne den Visual Basic for Applications (VBA) Editor in Excel. Das kannst du tun, indem du ALT + F11 drückst.
-
Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeinWorkbook)“ > Einfügen > Modul.
-
Gib den folgenden Code ein:
Sub PrintAndClosePDF()
Dim Product As String
Product = "C:\Pfad\zu\deiner\datei.pdf" ' Pfad zur PDF-Datei
' PDF drucken
ShellExecute 0, "print", Product, "", "", SW_HIDE
' Hier wird der Schließcode nicht benötigt, da der Druckprozess im Hintergrund läuft
End Sub
-
Passe den Pfad zur PDF-Datei an.
-
Führe das Makro aus, um die PDF zu drucken.
Mit diesem Code kannst du die PDF-Datei drucken, ohne sie zuerst zu öffnen. Der SW_HIDE Parameter sorgt dafür, dass alles im Hintergrund bleibt.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du eine andere Methode zum Drucken und Schließen der PDF-Datei ausprobieren möchtest, kannst du auch:
- Adobe Acrobat Reader verwenden, um PDFs direkt zu drucken. Stelle sicher, dass die Software korrekt installiert ist.
- Drittanbieter-Tools verwenden, die eine API bereitstellen, um PDFs zu drucken und zu schließen.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie du eine PDF ohne vorherige Anzeige drucken kannst:
Sub PrintPDFExample()
Dim pdfPath As String
pdfPath = "C:\Dein\Pfad\zur\datei.pdf"
ShellExecute 0, "print", pdfPath, "", "", SW_HIDE
End Sub
Dieser Code wird die PDF im Hintergrund drucken, ohne sie zu öffnen.
Tipps für Profis
- Stelle sicher, dass der Standarddrucker korrekt konfiguriert ist, bevor du das Makro ausführst.
-
Verwende die Application.Wait Methode, um weitere Zeit für das Drucken einzuplanen, falls du an deinem Code weiterarbeiten möchtest, während das Drucken erfolgt.
Application.Wait (Now + TimeValue("0:00:05")) ' Warten für 5 Sekunden
FAQ: Häufige Fragen
1. Kann ich mehrere PDF-Dateien gleichzeitig drucken?
Ja, du kannst eine Schleife verwenden, um mehrere Dateipfade in einem Array zu speichern und diese nacheinander zu drucken.
2. Wie kann ich sicherstellen, dass der Druckprozess abgeschlossen ist?
Leider bietet ShellExecute keine Möglichkeit, den Status des Druckjobs zu prüfen. Du kannst jedoch die Application.Wait Methode verwenden, um eine gewisse Wartezeit einzubauen.