Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Übergabe von Parametern mit Leerzeichen aus einem VBA-Script heraus in ein batch-file





Frage

Hallo, bei meiner Frage kommen vermutlich verschiedene "kleinere" Probleme zusammen und deshalb habe ich die letzten Stunden vergeblich gegoogelt, versucht und getestet ... Ich habe mehrere "identische" (u.a. gleiches VBA-Script) xls-Dateien auf einem Netzwerklaufwerk. Bei jedem Speichern soll eine Kopie der Datei (erweitert um das aktuelle Tagesdatum) erstellt werden - und zwar im Unterverzeichnis "Sicherungen". Dort liegt auch mein batch-file. Dieses rufe ich im VBA folgendermaßen auf: OriginalPfad = ThisWorkbook.Path SicherungsPfad = ThisWorkbook.Path & "\Sicherungen\" BatchAufruf = SicherungsPfad & "D_Sicherheitskopien.bat " & ThisWorkbook.Name & " " & OriginalPfad & " " & SicherungsPfad Shell BatchAufruf, 6 Seit ich jedoch Parameter übergebe, wird das Batch-file nicht aufgerufen bzw. kann ich die übergebenen Parameter nicht verarbeiten, wenn z.B. eine Pfadangabe ein Leerzeichen enthält. Kann mir bitte jemand die Lösung(en) hierfür nennen? Leider ist es sehr dringend - ich hoffe auch eure Hilfe. Vielen Dank schon mal, Gruß Jojo

Antwort 1 von Teerbaby

Bei Leerzeichen im Pfad musst du den Pfad in Anführungszeichen setzen.

Antwort 2 von jojo5

danke für die Antwort - das weiß ich prinzipiell auch und hab' es auch berücksichtigt. Allerdings kommen die Übergabeparameter nicht mit Anführungszeichen an, sondern werden einfach hintereinander aufgelistet (so sieht zumindest meine Variable 'BatchAufruf' aus. Bei der Verwendung von %%1, %%2 und %%3 im batch-file werden diese aber nicht korrekt übernommen. Dafür müsste ich ja "doppelte" Anführungszeichen angeben können.

Weißt Du da noch weiter?

Danke, Jojo

Antwort 3 von Busmaster

Hallo Jojo,

schau mal hier
http://www.janaforum.de/jana_forum/archive/12695/thread.html

(ganz unten): da wird das Problem von Leerzeichen im Pfad und Parameterübergabe behandelt. Die Links darin sind wohl nicht mehr aktuell.

Kurzfassung: Der Aufruf wird von Windows sozusagen über die Kommandozeile bearbeitet.
File- und Dateinamen mit Leerzeichen müssen in "" eingeschlossen werden (das weiss jeder), aber bei der Kommandozeile muss Datei und Parameter getrennt werden und die Teile im Pfadnamen, Dateinamen und Parameter, die Leerzeichen enthalten getrennt eingeschlossen werden:

Fall 1:
cmd /c "c:\test Pfad\test Befehl.bat" "test Parameter"
Resultat: Der Befehl "c:\test" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Fall2:
cmd /c c:\"test Pfad"\"test Befehl.bat" "test Parameter"
Deshalb muss man die etwas verwirrende Syntax beachten, um zum Erfolg zu kommen:

3. Möglichkeit: Leerzeichen im Pfad vermeiden, indem das Programm mit dem Kurznamen aufgerufen wird (ShortName- und ShortPath-Eigenschaft)


Gruss
Busmaster

Antwort 4 von jojo5

Hallo,
danke für die Antwort. Die Dateinamen kann ich leider nicht beeinflussen (dann hätten sie keine Leerzeichen ...).
Ich hab' das jetzt so gelöst, indem ich statt der Anführungszeichen Chr(34) verwendet habe - dann funktioniert's.
Trotzdem danke, viele Grüße
Jojo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: