Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Leerzeichen im Ordnerpfad

Leerzeichen im Ordnerpfad
29.07.2022 12:08:59
Nadine
Hallo zusammen,
ich habe einen Code, der mir alle PDFs aus einem Ordner zusammenführt und in einem anderen Ordner speichert. Dies funktioniert auch, solange der Pfad des Zielordners kein Leerzeichen enthält. Fehlermeldung bekomme ich keine.

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:\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:\Te st\"
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)
End Sub
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\Te st\"""
strPfadZ = "'C:\Desktop\Te st\'"
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeichen im Ordnerpfad
29.07.2022 12:10:53
{Boris}
Hi,
ungetestet: Ersetze das Leerzeichen mal durch %20
VG, Boris
AW: Leerzeichen im Ordnerpfad
29.07.2022 12:24:14
Nadine
Geht leider auch nicht.
Wäre auch nicht praktikabel, weil ich den Pfad gern aus Variablen zusammenbaue.
Da weiß ich nicht, ob und wie viele Leerzeichen da drin sind.

strPfadZ = "V:\Dokumentationen\" & Sheets("PD").Range("F1") & "\" & Sheets("PD").Range("E1") & "_DATUM\"

Anzeige
AW: Leerzeichen im Ordnerpfad
29.07.2022 12:58:42
volti
Hallo zusammen,
die %20 werden in Links verwendet, da dort keine Leerzeichen enthalten sein dürfen wird auf die hexdezimale Schreibweise zurückgegriffen.
%20 = &H20 = 32 dez. = Leerzeichen
Ich würde eher auch den Exe-Pfad in Gänsefüßchen setzen, der da ja auch Leerzeichen verwendet werden und Shell die Leerzeichen als Parameterabtrennung nimmt. (ungetestet)
strGS = """C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe"""
Gruß Karl-Heinz
Anzeige
AW: Leerzeichen im Ordnerpfad
30.07.2022 12:57:33
Nadine
Danke, aber der Pfad funktioniert mit Leerzeichen.
AW: Leerzeichen im Ordnerpfad
29.07.2022 13:51:14
peterk
Hallo Nadine
Probier mal:
strPfadZ = """" & strPfadZ & "3_Zeichnungen.pdf"""
strCommand = strGS & " -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=" & strPfadZ & " -dBATCH" & strPDF
Erklärung
Dein Ansatz liefert : -sOutputFile=C:\Te st\3_Zeichnungen.pdf
Nepumuk liefert : -sOutputFile="C:\Te st\"3_Zeichnungen.pdf
Meins liefert : -sOutputFile="C:\Te st\3_Zeichnungen.pdf"
Peter
Anzeige
AW: Leerzeichen im Ordnerpfad
30.07.2022 12:58:24
Nadine
Danke, das probiere ich gleich Montag mal aus.
AW: Leerzeichen im Ordnerpfad
01.08.2022 08:02:57
Nadine
Funktioniert! Super! Vielen Dank!
;
Anzeige
Anzeige

Infobox / Tutorial

Leerzeichen im Ordnerpfad in Excel VBA handhaben


Schritt-für-Schritt-Anleitung

  1. Überprüfe den Pfad: Stelle sicher, dass der Pfad, den Du verwendest, korrekt ist und keine Tippfehler aufweist.
  2. Setze Pfade in Anführungszeichen: Wenn Dein Ordnerpfad Leerzeichen enthält, musst Du den gesamten Pfad in Anführungszeichen setzen. Beispiel:
    strPfadZ = """C:\Dein Ordner\Mit Leerzeichen\"
  3. PDF-Zusammenführung anpassen: Stelle sicher, dass Du den Befehl zum Öffnen der Datei mit dem korrekten Pfad und den Anführungszeichen versiehst. Beispiel:
    strCommand = strGS & " -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=" & strPfadZ & "3_Zeichnungen.pdf -dBATCH" & strPDF
  4. Leerzeichen im Dateinamen: Wenn die Dateinamen ebenfalls Leerzeichen enthalten, verwende auch hier Anführungszeichen.
    If InStr(strDatname, " ") Then
       strPDF = strPDF & " """ & strPfad & strDatname & """"
    Else
       strPDF = strPDF & " " & strPfad & strDatname
    End If

Häufige Fehler und Lösungen

  • Fehler: Keine PDF-Dateien werden gefunden: Überprüfe, ob der Pfad korrekt ist und ob Du über die richtigen Berechtigungen verfügst.
  • Fehler: Pfad führt zu einer Fehlermeldung: Stelle sicher, dass alle Pfade in Anführungszeichen gesetzt sind, besonders wenn Leerzeichen enthalten sind.
  • Lösung: Windows Pfad Leerzeichen ersetzen: Wenn Du Schwierigkeiten mit Leerzeichen hast, kannst Du auch den Windows Pfad mit %20 ersetzen, jedoch ist dies nicht die gängige Praxis in Excel VBA.

Alternative Methoden

Falls Du weiterhin Probleme mit Leerzeichen im Ordnerpfad hast, kannst Du folgende Methoden ausprobieren:

  1. VBA-Funktion nutzen: Erstelle eine Funktion, die Leerzeichen durch einen anderen Charakter ersetzt, bevor Du den Pfad verwendest.
  2. Verwendung von Variablen: Baue Pfade dynamisch aus Variablen zusammen und stelle sicher, dass Du bei der Zusammenfügung immer Anführungszeichen verwendest.
    strPfadZ = "V:\Dokumentationen\" & Sheets("PD").Range("F1") & "\" & Sheets("PD").Range("E1") & "_DATUM\"

Praktische Beispiele

Hier ist ein Beispiel für das Zusammenführen von PDF-Dateien unter Berücksichtigung von Leerzeichen:

Sub PDF_Merge()
    Dim strPfad As String
    Dim strPfadZ As String
    Dim strGS As String
    Dim strPDF As String
    Dim strDatname As String

    strGS = """C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe"""
    strPfad = "C:\Zeichnungen\"
    strPfadZ = """C:\Te st\"

    strDatname = Dir(strPfad & "*.pdf")

    Do While Len(strDatname)
        If InStr(strDatname, " ") Then
            strPDF = strPDF & " """ & strPfad & strDatname & """"
        Else
            strPDF = strPDF & " " & strPfad & strDatname
        End If
        strDatname = Dir
    Loop

    Dim strCommand As String
    strCommand = strGS & " -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=" & strPfadZ & "3_Zeichnungen.pdf -dBATCH" & strPDF
    Shell strCommand, vbHide
End Sub

Tipps für Profis

  • Verwende Debugging: Nutze Debugging-Tools in Excel VBA, um sicherzustellen, dass alle Variablen korrekt gesetzt sind.
  • Pfad-Validierung: Implementiere eine einfache Validierung, um sicherzustellen, dass der Pfad existiert, bevor Du versuchst, Dateien zu laden.
  • Automatisierung: Bedenke, dass Du durch das Ersetzen von Leerzeichen in Pfaden Deine Automatisierungsprozesse verbessern kannst.

FAQ: Häufige Fragen

1. Warum funktioniert mein Pfad nicht?
Wenn Dein Pfad Leerzeichen enthält, stelle sicher, dass Du ihn in Anführungszeichen setzt.

2. Kann ich Leerzeichen durch %20 ersetzen?
Das Ersetzen von Leerzeichen durch %20 ist in Links üblich, aber in Excel VBA solltest Du stattdessen Anführungszeichen verwenden.

3. Wie öffne ich eine Datei mit einem Pfad in Excel VBA?
Du kannst die Shell-Funktion verwenden, um eine Datei zu öffnen, indem Du den vollständigen Pfad angibst, der in Anführungszeichen gesetzt sein sollte.

4. Was passiert, wenn ich mehrere Leerzeichen im Pfad habe?
Alle Leerzeichen sollten in Anführungszeichen gesetzt werden, damit Excel VBA sie korrekt verarbeitet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige