La respuesta esta en el Shell... ahi te va un ejemplo para que abras una aplicacion y termine en cuanto la cierres.
Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess as Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode as Long) As Long
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
La primera OpenProcess, abre un proceso y nos devuelve un identificador valido para poder consultar su estado posteriormente. La segunda GetExitCodeProcess, obtiene informaicon de un proceso. Si el valor devuelto por esta segunda funcion es la constante STILL_ACTIVE, quiere decir que el proceso sigue activo.
Sub Ejecutar(Aplicacion AS STring)
DIM hProceso as Long
Dim Activa as Long
Dim ret as Long
hProceso = OpenProcess(PROCESS_QUERY_INFORMATION, 0, Shell(Aplicacion,1)
Do ret = Get ExitCodeProcess(hProceso, Activa)
DoEvents
Loop While Activa = STILL_ACTIVE
End Sub
Si un form pones un boton que diga "ejecutar", agregale esto:
Private Sub cmdEjecutar_Click()
Ejecutar Trim(txtAplication)
MsgBox "Listo! Ya termino la aplicacion ejecutada"
EndSub
Tienes que tener un form con un textbox que se llama txtAplicacion en donde tu puedes abrir la aplicacion que quieres. OJO: tiene que ser algo.EXE oki?
Espero te sirva !