Reputation: 14688
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?
Upvotes: 3
Views: 13449
Reputation: 81
A possible solution is first find out how to close manually using a shortcut key then using sendkey function in vba to send keys to close
Upvotes: 0
Reputation: 21
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
Upvotes: 2
Reputation: 76610
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
Upvotes: 5