Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
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
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
Anwender
Anzeige
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

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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige