John M
John M

Reputation: 14688

Excel VBA - Stop running program that was started by Shell?

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

Answers (3)

Rush
Rush

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

Martin H.
Martin H.

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

Igor Zevaka
Igor Zevaka

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

Related Questions