Wait for shell command to complete [duplicate] Wait for shell command to complete [duplicate] vba vba

Wait for shell command to complete [duplicate]


Use the WScript.Shell instead, because it has a waitOnReturn option:

Dim wsh As ObjectSet wsh = VBA.CreateObject("WScript.Shell")Dim waitOnReturn As Boolean: waitOnReturn = TrueDim windowStyle As Integer: windowStyle = 1wsh.Run "C:\folder\runbat.bat", windowStyle, waitOnReturn

(Idea copied from Wait for Shell to finish, then format cells - synchronously execute a command)


Add the following Sub:

Sub SyncShell(ByVal Cmd As String, ByVal WindowStyle As VbAppWinStyle)VBA.CreateObject("WScript.Shell").Run Cmd, WindowStyle, TrueEnd Sub

If you add a reference to C:\Windows\system32\wshom.ocx you can also use:

Sub SyncShell(ByVal Cmd As String, ByVal WindowStyle As VbAppWinStyle)Static wsh As New WshShellwsh.Run Cmd, WindowStyle, TrueEnd Sub

This version should be more efficient.


Save the bat file on "C:\WINDOWS\system32" and use below code it is working

   Dim wsh As Object   Set wsh = VBA.CreateObject("WScript.Shell")   Dim waitOnReturn As Boolean: waitOnReturn = True   Dim windowStyle As Integer: windowStyle = 1   Dim errorCode As Integer   errorCode = wsh.Run("runbat.bat", windowStyle, waitOnReturn)If errorCode = 0 Then    'Insert your code hereElse    MsgBox "Program exited with error code " & errorCode & "."End If