Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pdf aus Excel drucken

Pdf aus Excel drucken
15.08.2005 21:22:09
Max
Hallo,
ich habe hier im Forum ein Makro gefunden, welches PDF-Dateien im Hintergrund
drucken soll:

Sub test()
Datei = "C:\test.pdf"
Ergeb = Shell("C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe " & Datei, vbHide)
'AppActivate Ergeb
SendKeys ("^p")
End Sub

Der Dateiaufruf mit Acrobat geht, aber es läuft alles im Vordergrund ab.
Das Drucken muß man auch extra im Acrobat-Menü bestätigen.
Gibt es eine Änderung des Makro`s, mit der wirklich alles im Hintergrund
abläuft?
Wäre schön, wenn jemand von euch wüßte wie man das lösen kann!
Gruß
Max
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Pdf aus Excel drucken (weitere Ideen?)
16.08.2005 19:19:25
Max
Hallo Matthias,
erstmal vielen Dank für den Link ;)
Die Änderung des Makro auf

Sub test()
Datei = "C:\133.pdf"
Ergeb = Shell("C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe  /p /h" & Datei, vbHide)
End Sub

sorgt immerhin dafür, dass Acrobat nur noch in der Taskleiste liegt und von dort
geschlossen werden muß. Der Druck erfolgt im Hintergrund.
Falls sich jemand mit Komandozeilen-Befehlen auskennt und eine Idee hat, was
man per Slash noch hinter "/p /h" setzen kann damit sich der Reader wieder schließt,
wäre dann die perfekte Lösung.
Gruß
Max
Anzeige
AW: Pdf aus Excel drucken (weitere Ideen?)
16.08.2005 21:14:04
Matthias
Hallo Max,
probier das mal:

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" 'in 30 Sek beenden
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

Eine Notlösung, geb ich zu.
Hier wird der Reader nach 30 sec zwangsbeendet. Vielleicht braucht es etwas länger, die Zeit kann man ja anpassen.
Gruß Matthias
Anzeige
AW: Pdf aus Excel drucken
17.08.2005 19:03:26
Max
Hallo Matthias,
vielen Dank auch für diese Lösung ;-))
Mit den 30 Sekunden ist insofern egal, als der Drucker nach dem Druckbefehl
auch ohne geöffneten Reader weitermacht.
Hauptsache, Acrobat verkrümelt sich wieder.
Dir noch einen schönen Abend.
Gruß
Max
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Einfügen eines neuen Moduls:

    • Klicke im Menü auf "Einfügen" > "Modul".
  3. 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
  4. Ändere den Dateipfad in der Zeile Datei = "C:\test.pdf" auf den Pfad Deiner PDF-Datei.

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige