Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben

die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben
21.10.2023 00:38:44
JoWE
Hallo,

wie schaffe ich es alle PDF-Files eines bestimmten Ordners mit einem Excel-Makro auszudrucken, ohne die PDF-Datei zu öffnen.
Der Ordner: C:\Temp\ enthält neben anderen Dateien mehrere PDF-Dateien (a1.pdf, a2.pdf, a3.pdf ...)
Mein Rechner: Windows11 64 Bit, Excel 2021

Gruß
Jochen

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben
21.10.2023 10:50:01
Alwin Weisangler
Hallo Jochen,

teste mal:


Option Explicit
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (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
Dim arrPdfList()

Sub allePDF_Holen()
Dim strPath$, strFile$, i&, Thema As Variant

If strPath = "" Then strPath = ShellVerzeichnisBrowser
If strPath > "" Then
strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
strFile = Dir(strPath & "*.pdf", vbNormal)

Do While strFile > ""
i = i + 1
ReDim Preserve arrPdfList(1 To 1, 1 To i)
arrPdfList(1, i) = strFile
strFile = Dir
Loop
End If
allePDF_drucken
End Sub

Sub allePDF_drucken()
Dim varPdf, sURL, sLocalFile, lResult, SHOWMAXIMIZED, i&
For i = 1 To UBound(arrPdfList, 2)
ShellExecute 0, "open", arrPdfList(1, i), "", "", SHOWMAXIMIZED
ShellExecute 0, "print", arrPdfList(1, i), "", "", SHOWMAXIMIZED
ShellExecute 0, "exit", arrPdfList(1, i), "", "", SHOWMAXIMIZED
Next i
End Sub

Private Function ShellVerzeichnisBrowser(Optional ByVal defaultPath = "") As String
Dim objItem As Object, objShell As Object, objFolder As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0&, "Bitte Verzeichnis anklicken", 0&, defaultPath)
If objFolder Is Nothing Then GoTo weiter
Set objItem = objFolder.Self
ShellVerzeichnisBrowser = objItem.Path
weiter:
Set objShell = Nothing
Set objFolder = Nothing
Set objItem = Nothing
End Function


Gruß Uwe
Anzeige
AW: die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben
21.10.2023 10:59:28
Alwin Weisangler
Sorry, da waren noch ein paar Variablen, welche ich sonst zum Download etc. verwendet hatte drin. Diese können raus also dann so:


Option Explicit
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (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
Dim arrPdfList()

Sub allePDF_Holen()
Dim strPath$, strFile$, i&

If strPath = "" Then strPath = ShellVerzeichnisBrowser
If strPath > "" Then
strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
strFile = Dir(strPath & "*.pdf", vbNormal)

Do While strFile > ""
i = i + 1
ReDim Preserve arrPdfList(1 To 1, 1 To i)
arrPdfList(1, i) = strFile
strFile = Dir
Loop
End If
allePDF_drucken
End Sub

Sub allePDF_drucken()
Dim SHOWMAXIMIZED, i&
For i = 1 To UBound(arrPdfList, 2)
ShellExecute 0, "open", arrPdfList(1, i), "", "", SHOWMAXIMIZED
ShellExecute 0, "print", arrPdfList(1, i), "", "", SHOWMAXIMIZED
ShellExecute 0, "exit", arrPdfList(1, i), "", "", SHOWMAXIMIZED
Next i
End Sub

Private Function ShellVerzeichnisBrowser(Optional ByVal defaultPath = "") As String
Dim objItem As Object, objShell As Object, objFolder As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0&, "Bitte Verzeichnis anklicken", 0&, defaultPath)
If objFolder Is Nothing Then GoTo weiter
Set objItem = objFolder.Self
ShellVerzeichnisBrowser = objItem.Path
weiter:
Set objShell = Nothing
Set objFolder = Nothing
Set objItem = Nothing
End Function


Gruß Uwe
Anzeige
AW: die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben
21.10.2023 12:34:56
JoWE
Hallo Uwe,

danke für den Code. Er läuft ohne Fehlermeldung durch, jedoch wird nichts auf meinem Drucker ausgegeben.
Auch die Druckerwarteschlange bleibt leer.
Vielleicht hatte ich das in meiner Frage nicht deutlich genug gesagt.
Ich möchte, dass alle bereits in einem Ordner vorhandenen PDF-Dokumente auf dem Drucker ausgegeben werden.
Und das möchte ich über ein VBA-Makro realisieren.

Gruß
Jochen
AW: die PDF-Dateien eines Ordners auf aktivem Drucker ausgeben
21.10.2023 10:57:01
Oberschlumpf
Hi Jochen,

ich dachte, ich sei der 1., aber Uwe war doch n Tuck schneller :-)

Meine Idee:
Schau dir mal das hier an
https://administrator.de/forum/batchdatei-autom-drucken-von-word-und-pdf-dateien-aus-einem-ordner-auf-einem-win2k8-server-189987.html

Da werden nicht mit VBA, sondern mit Hilfe einer CMD-Datei aus dem gewählten Ordner alle PDF's gedruckt.
Den Pfad + die Parameter zu deinem PDF-Reader musst du wohl auch anpassen, wenn du nicht Acrobat Reader nutzt.

Die CMD-Datei könntest du ja mit SHELL ... aus VBA heraus starten.

Hilfts?

Ciao
Thorsten
Anzeige
AW: Danke, funktioniert. Ich suche jedoch eine VBA-Lösung oT
21.10.2023 12:37:17
JoWE
AW: Danke, funktioniert. Ich suche jedoch eine VBA-Lösung oT
21.10.2023 13:34:56
Alwin Weisangler
Hallo Jochen,
ja ich hab grad festgestellt, dass nur PDF Dateien, welche aus Office (Word, Excel...) erzeugt wurden geöffnet und gedruckt werden. Bei mir lief die 3 PDF Dateien welche ich mal schnell mit Excel erzeugt hatte durch.
Ich schau mir das heute Abend mal in Ruhe an und melde mich, wenn ich eine Lösung gefunden habe.

Gruß Uwe
AW: Danke, funktioniert. Ich suche jedoch eine VBA-Lösung oT
21.10.2023 13:54:25
JoWE
Uwe,

die PDF-Dateien, die ich auf meinem Drucker ausgeben möchte,
sind von einem Excel-Makro, welches Word-Dokumente erstellt erzeugt worden.
Das sollte demzufolge eigentlich nicht das Problem sein.
Bin gespannt wo das hinführt :-)

LG
Jochen
Anzeige
AW: Danke, funktioniert. Ich suche jedoch eine VBA-Lösung oT
21.10.2023 17:12:14
Alwin Weisangler
das sollte jetzt laufen.



Option Explicit
Private Declare PtrSafe 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
Dim arrPdfList(), strPath$

Sub allePDF_Holen()
Dim strFile$, i&

If strPath = "" Then strPath = ShellVerzeichnisBrowser
If strPath > "" Then
strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
strFile = Dir(strPath & "*.pdf", vbNormal)

Do While strFile > ""
i = i + 1
ReDim Preserve arrPdfList(1 To 1, 1 To i)
arrPdfList(1, i) = strFile
strFile = Dir
Loop
End If
allePDF_drucken
End Sub

Sub allePDF_drucken()
Dim i&
For i = 1 To UBound(arrPdfList, 2)
ShellExecuteA 0, "print", strPath & arrPdfList(1, i), vbNullString, vbNullString, 0
Next i
End Sub

Private Function ShellVerzeichnisBrowser(Optional ByVal defaultPath = "") As String
Dim objItem As Object, objShell As Object, objFolder As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0&, "Bitte Verzeichnis anklicken", 0&, defaultPath)
If objFolder Is Nothing Then GoTo weiter
Set objItem = objFolder.Self
ShellVerzeichnisBrowser = objItem.Path
weiter:
Set objShell = Nothing
Set objFolder = Nothing
Set objItem = Nothing
End Function


Gruß Uwe
Anzeige
AW: Läuft super!!
21.10.2023 18:42:18
JoWE
Hallo Uwe,

ja, jetzt läuft's perfekt. Danke Dir.
Wünsche ein schönes Wochenende.

Gruß
Jochen
AW: Läuft super!!
21.10.2023 19:53:55
Alwin Weisangler
Hallo Jochen,
Da sieht man mal was so ein kleiner Buchstabe anrichtet, wenn er übersehen wird.
Man kann das Ganze auch in wenige Zeilen packen. Aber ich hab es absichtlich mit Hintertürchen zwecks möglicher Dokumentation gebaut.
Falls du die gedruckten Dateien in einer Tabelle dokumentieren willst, transponiere das Array und übergebe es einer Tabelle.
Ich wünsche dir auch ein schönes Wochenende.

Gruß Uwe
AW: Läuft super!!
21.10.2023 21:55:17
JoWE
Ja da hast Du absolut recht und so manches Mal sieht man vor lauter
Bäumen den Wald nicht. kenn' ich gut.
Habe Deine Lösung für mein Projekt stark gekürzt und erfolgreich integriert.
Und nach einiger Recherche glaub' ich nun auch die Lösung verstanden zu haben,
Also noch mal danke.
Jochen
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige