This question already has an answer here:
I'm running a simple shell command in Excel VBA that runs a batch file in a specified directory like below:
Dim strBatchName As String
strBatchName = "C:\folder\runbat.bat"
Shell strBatchName
Sometimes the batch file might take longer on some computer to run, and there are proceeding VBA code that is dependent on the batch file to finish running. I know you can set a wait timer like below:
Application.Wait Now + TimeSerial(0, 0, 5)
But that might not work on some computer that are too slow. Is there a way to systematically tell Excel to proceed with the rest of the VBA code until after the shell has finish running?
Could you have the BATCH create a file when it's finished and VBA wait until that file's created? Or have batch delete a flag-file when it's finished and VBA waits until the flagfile is gone?
Add the following Sub:
If you add a reference to
C:\Windows\system32\wshom.ocx
you can also use:This version should be more efficient.