Hallo zusammen,
ich arbeite mit Windows 10 Pro, Excel 2016.
Ich habe folgenden Code, der alle PDFs in einem Ordner zu einer PDF zusammenführt und in einem anderen Ordner ablegt:
Sub PDF_Merge()
Dim strPfad As String
Dim strPfadZ As String
Dim strName As String
Dim strGS As String
Dim strPDF As String
Dim strPDFZ As String
Dim strDatname As String
Dim strCommand As String
Dim lngTaskID As Long
Dim lngptrProcID As LongPtr
'Pfad für Ghostscript - ggf. anpassen
strGS = "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe"
'Verzeichnis auswählen, in dem die PDFs stehen, die zusammengefügt werden sollen
strPfad = "C:\Desktop\Zeichnungen\"
'PDF-Dateien aus Verzeichnis einlesen
strDatname = Dir(strPfad & "*.pdf")
'Schleife zum einlesen aller entsprechenden Dateien
Do While Len(strDatname)
'Dateiname eintragen:
'Prüfen, ob Leerzeichen im Dateinamen existiert
If InStr(strDatname, " ") Then
'falls ja, muss der Dateiname in Anführungszeichen gesetzt werden
strPDF = strPDF & " """ & strPfad & strDatname & """"
Else
'falls nein, reicht die einfache Übername des eingelesenen Namens
strPDF = strPDF & " " & strPfad & strDatname
End If
strDatname = Dir
'Zielordner
strPfadZ = "C:\Desktop\Test\"
Loop
'für Ghostscript den Befehl erstellen
strCommand = strGS & " -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=" & strPfadZ & "3_Zeichnungen.pdf -dBATCH" & strPDF
'Ghostscript-Befehl ausführen
lngTaskID = Shell(strCommand, 0)
lngptrProcID = OpenProcess(SYNCHRONIZE + PROCESS_QUERY_INFORMATION, 0&, lngTaskID)
Call WaitForSingleObject(lngptrProcID, INFINITE)
Call CloseHandle(lngptrProcID)
MsgBox "Fertig"
End Sub
Das funktioniert auch, solange der Zielpfad kein Leerzeichen enhält (Code läuft, ohne Fehlermeldung durch, erstellt aber kein Dokument), also zum Beispiel:
strPfadZ = "C:\Desktop\Te st\"
Hat jemand eine Idee, was ich ändern muss, damit es auch mit Leerzeichen funktioniert?
Folgende Variationen habe ich schon probiert, bin aber nicht zum Ziel gekommen:
strPfadZ = """C:\Desktop\Test\"""
strPfadZ = "'C:\Desktop\Test\'"
|