
125218
11.11.2015, aktualisiert um 19:25:42 Uhr
VBA Shell Befehl asynchron
Guten Abend,
ich bin im Moment dran ein Makro zu schreiben, dass eine Batch-Datei ausführen soll. Diese Batch-Datei durchsucht eine Datenbank nach einer Variablen, die ich aus einer Zelle in Excel mit gegeben habe. Das funktioniert auch prima. Die Batch-Datei erstellt mit dem Ergebnis eine txt-Datei. Aus dieser sollen dann anschließend im Makro Ergebnisse lesen. Jetzt das Problem: ich rufe die Batch-Datei mit einem shell-Befehl auf. Dadurch wartet aber das Makro nicht, bis die Batch die txt-Datei erstellt hat, arbeitet direkt weiter und bringt dann logischerweise die Fehlermeldung 'txt existiert nicht'.
Nun wurde mir der WScript Befehl empfohlen. Leider werde ich daraus absolut nicht schlüsslig.
WIe kann ich also die nötige Pause in mein Makro bringen, dass die Batch vollständig ausgeführt wurde und erst dann weiter gearbeitet wird?
Liebe Grüße
Saskia
ich bin im Moment dran ein Makro zu schreiben, dass eine Batch-Datei ausführen soll. Diese Batch-Datei durchsucht eine Datenbank nach einer Variablen, die ich aus einer Zelle in Excel mit gegeben habe. Das funktioniert auch prima. Die Batch-Datei erstellt mit dem Ergebnis eine txt-Datei. Aus dieser sollen dann anschließend im Makro Ergebnisse lesen. Jetzt das Problem: ich rufe die Batch-Datei mit einem shell-Befehl auf. Dadurch wartet aber das Makro nicht, bis die Batch die txt-Datei erstellt hat, arbeitet direkt weiter und bringt dann logischerweise die Fehlermeldung 'txt existiert nicht'.
Nun wurde mir der WScript Befehl empfohlen. Leider werde ich daraus absolut nicht schlüsslig.
WIe kann ich also die nötige Pause in mein Makro bringen, dass die Batch vollständig ausgeführt wurde und erst dann weiter gearbeitet wird?
Liebe Grüße
Saskia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 288112
Url: https://administrator.de/forum/vba-shell-befehl-asynchron-288112.html
Ausgedruckt am: 03.05.2025 um 03:05 Uhr
1 Kommentar
Hi,
z.B. so
Das "True" sorgt dafür, dass der Befehl wartet, bis der gestartete Prozess beendet wird. Kommt darauf an, was man da in der Batch startet. Wenn Du z.B. dort kein Kommandozeilen-Programm startest sondern ein Windows-Programm, z.B. "notepad.exe", dann würde die Batch weitermachen ohne auf Notepad zu warten. Es sei denn, man startet in diesem Beispiel Notepad mit "start /wait notepad.exe"
E.
z.B. so
CreateObject("Wscript.Shell").Run "die-batch.cmd",0,True
Das "True" sorgt dafür, dass der Befehl wartet, bis der gestartete Prozess beendet wird. Kommt darauf an, was man da in der Batch startet. Wenn Du z.B. dort kein Kommandozeilen-Programm startest sondern ein Windows-Programm, z.B. "notepad.exe", dann würde die Batch weitermachen ohne auf Notepad zu warten. Es sei denn, man startet in diesem Beispiel Notepad mit "start /wait notepad.exe"
E.