Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private sub Prueba
Dim lng1 As Long, lngRc As Long
lng1 = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell("C:\Ruta\Ejecutable.exe", vbNormalFocus))
Sleep 60000
GetExitCodeProcess lng1, lngRc
If lngRc = STILL_ACTIVE Then TerminateProcess lng1, lngRc
End Sub