Excel 2002 VBA.
I have a macro that launches an external script whenever a certain condition is met:
Shell("c:\program\script.exe")
How do I stop that running program when the condition is not met?
Since Shell returns the process ID of the process you started you could try using pskill with that procedd ID to stop it:
dim pid
pid = Shell("c:\program\script.exe")
'...Do something
Shell "pskill " & pid
Shell reference: https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/shell-function
This will also close the application:
TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & "script.exe", 0, True)
And it can be transformed to a re-usable function as follows:
Function TaskKill(sTaskName)
TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True)
End Function