online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon jojo5 vom 06.11.2020, 13:28 Options

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

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 schreiben

Antwort 1 von Teerbaby vom 06.11.2020, 13:38 Options

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

Antwort 2 von jojo5 vom 06.11.2020, 13:53 Options

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 vom 06.11.2020, 18:59 Options

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 vom 07.11.2020, 07:22 Options

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

Ähnliche Themen

Leerzeichen in Liste löschen
Amici  16.05.2007 - 114 Hits - 2 Antworten

batch-file beim Speichern der xls-Datei starten
jojo5  08.10.2007 - 69 Hits - 7 Antworten

Leerzeichen automatisch setzen
redpirat  07.12.2007 - 82 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026