PDFs zusammenführen
27.07.2022 10:50:10
Nadine
ich hoffe ihr könnt mir helfen.
Ich füge mit folgendem Code mehrere PDFs aus einem Ordner zusammen:
Sub PDF_Merge()
Dim strPfad As String
Dim strPfadZ As String
Dim strGS As String
Dim strPDF As String
Dim strDatname As String
Dim strCommand As String
Dim t As Variant
'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:\PDFTest\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
strPfadZ = "C:\PDFTest\"
Loop
'für Ghostscript den Befehl erstellen
strCommand = strGS & " -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=" & strPfadZ & "Merge.pdf -dBATCH" & strPDF
'Ghostscript-Befehl ausführen
t = Shell(strCommand, 0)
End Sub
Das funktioniert. Im Anschluss möchte ich den Ordner mit den einzelnen PDFs löschen, das mache ich mit:
Sub löschen()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFolder ("C:\PDFTest\Zeichnungen")
Set objFSO = Nothing
MsgBox "Fertig"
End Sub
Das funktioniert auch.Wenn ich nun den zweiten Code am Ende des ersten aufrufe (Call löschen), bekomme ich den Laufzeitfehler 70: Zugriff verweigert.
Im Einzelschrittmodus funktioniert es.
Hat jemand eine Idee warum dieser Fehler kommt?