HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
PDF Drucken VBA
30.09.2019 10:39:08
Sabine
Hallo Herbers,
folgenden Code habe ich mir aus dem Forum herausgesucht:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Datei As String, NeuDatei As String, Pfad As String, NeuPfad As String
Dim strOff As String, Ext As String
If Target.Column = 4 Then
If Target  "" Then
Ext = ".pdf"
strOff = "\123\4567 789\"
Pfad = ThisWorkbook.Path
Datei = Target
NeuPfad = Left(Pfad, InStrRev(Pfad, "\") - 1) & strOff
If Dir(NeuPfad, vbDirectory)  "" Then
NeuDatei = NeuPfad & Datei & Ext
If Dir(NeuDatei)  "" Then
'  ActiveWorkbook.FollowHyperlink NeuPfad & Datei & Ext
'-> Hier müsste anstatt des Hyperlinks der Befehl rein 
Ich würde gern mittels eines Doppelklickbefehles die PDF (öffnen und) ausdrucken.. Habe im Netz nicht wirklich etwas nützliches gefunden...
Vielen Dank im voraus..
Gruß
Sabine

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Benutzer
AW: PDF Drucken VBA
30.09.2019 11:10:27
ChrisL
Hi Sabine
Ich habe mir da kürzlich was aus dem Netz kopiert und leicht modifiziert. (die Quelle weiss ich leider nicht mehr)
Range("B1") müsstest du durch deinen Pfad ersetzen.
Wenn die PDF unterschiedliche Länge haben und wenn die Reihenfolge relevant ist, dann müsstest du ggf. eine zeitliche Verzögerung (Wait) um 1-2 Sekunden einbauen. Ansonsten kommt die Reihenfolge durcheinander (kleine Dokumente "überholen" längere Dokumente).
Zudem müsstest du bei grossen Stapelverarbeitungen den "Sleep-Modus" von Windows deaktivieren. Der Prozess unterbricht sonst.
cu
Chris
Private Declare

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

Sub prcPrint_PDF()
Dim strPath As String
Dim FSO As Object, F1 As Object
strPath = Tabelle1.Range("B1")
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO = FSO.Getfolder(strPath)
If Not MsgBox(FSO.Files.Count & " Dateien werden auf den Standard-/Default-Drucker ausgegeben.", _
vbInformation + vbYesNo) = vbYes Then Exit Sub
For Each F1 In FSO.Files
If LCase(CStr(F1.Path)) Like "*.pdf" Then
ShellExecuteA 0&, "Print", F1.Path, vbNullString, vbNullString, 0
End If
Next F1
End Sub

AW: PDF Drucken VBA
30.09.2019 11:28:16
Sabine
Hallo Chris,
2 Fragen erstmal
An welche Stelle füge ich die "private Declare" ein? direkt vor meinem doubleclick-Befehl?
kann ich dann auch "strPath=NeuPfad & Datei & Ext" als Pfad verwenden für mein Code?
Vielen dank für deine Mühen.
Gruß
AW: PDF Drucken VBA
30.09.2019 11:36:11
ChrisL
Hi
Ja das wäre ein guter Start :)
Falls es nicht geht, versuch ein Standardmodul.
Die Stapelverarbeitung ist in deinem Fall irrelevant (meine Bemerkungen und FSO im Code kannst du ignorieren). Eigentlich brauchst du nur die Funktion und den ShellExecute Befehl.
cu
Chris
leider funktioniert es so bei mir nicht
30.09.2019 12:00:12
Sabine
Hab jetzt es jetzt hin und her versucht. Aber leider ist die Deklaration nicht erfolgreich weil sie sich auch jedesmal rot färbt sobald ich diese einfüge. So ist der aktuelle Code:
Private Declare
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
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Datei As String, NeuDatei As String, Pfad As String, NeuPfad As String
Dim strOff As String, Ext As String
If Target.Column = 4 Then
If Target "" Then
Ext = ".pdf"
strOff = "\123\456 789\"
Pfad = ThisWorkbook.Path
Datei = Target
NeuPfad = Left(Pfad, InStrRev(Pfad, "\") - 1) & strOff
If Dir(NeuPfad, vbDirectory) "" Then
NeuDatei = NeuPfad & Datei & Ext
If Dir(NeuDatei) "" Then
Call ShellExecute(0, "print", NeuPfad & Datei & Ext, "", "", nShowCmd)
Else
MsgBox NeuDatei & " NICHT gefunden", vbCritical
End If
Else
MsgBox "Pfad nicht gefunden", vbCritical
End If
End If
End If
End If
AW: leider funktioniert es so bei mir nicht
30.09.2019 12:36:00
ChrisL
die Darstellung im Forum war etwas unglücklich...
Private Declare 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

AW: leider funktioniert es so bei mir nicht
30.09.2019 15:18:33
Sabine
Ahhh..
Jetzt passt alles. Vielen Dank.

100 Forumthreads zu ähnlichen Themen

Meistgelesene Forumthreads (12 Monate)