Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

pdf Datei schließen

Forumthread: pdf Datei schließen

pdf Datei schließen
05.12.2006 09:31:51
andreas2
Hallo,
mit folgenden Code möchte ich eine pdf Datei drucken.
Dafür öffne ich sie zuerst, drucke, und dann soll sie geschlossen werden. Nur das Schließen funktioniert nicht.
Weis jemand Rat?
ShellExecute 0, "open", Product, "", "", SHOWMAXIMIZED
ShellExecute 0, "print", Product, "", "", SHOWMAXIMIZED
ShellExecute 0, "close", Product, "", "", SHOWMAXIMIZED
ShellExecute 0, "exit", Product, "", "", SHOWMAXIMIZED
Danke, Andreas
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: pdf Datei schließen
06.12.2006 00:42:23
Nepumuk
Hallo Andreas,
die lpOperation - Parameter "close" und "exit" hast du wohl erfunden? Ich kenne nur diese:
"edit", "explore", "find", "open", "print", "properties"
Wenn du die Datei nur drucken willst, musst du sie vorher nicht öffnen. Da reicht als lpOperation - Parameter "print" und als nShowCmd - Parameter benutz du besser SW_HIDE, dann bleibt das ganze im Hintergrund.
Gruß
Nepumuk
Anzeige
;
Anzeige

Infobox / Tutorial

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:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel. Das kannst du tun, indem du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeinWorkbook)“ > Einfügen > Modul.

  3. 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
  4. Passe den Pfad zur PDF-Datei an.

  5. 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

  • Fehler: PDF wird nicht gedruckt

    • Lösung: Stelle sicher, dass der Pfad zur PDF-Datei korrekt ist. Überprüfe auch die Druckereinstellungen.
  • Fehler: PDF-Datei lässt sich nicht schließen

    • Lösung: Der Befehl ShellExecute unterstützt den close und exit Parameter nicht für PDF-Dateien. Du brauchst diesen nicht zu verwenden, da das Drucken im Hintergrund erfolgt.

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige