Sometimes your VBA applications have to communicate with another Windows application. In those situations it is useful to know if the other application is running prior to passing data or otherwise attempting to communicate with it. The easiest way to do this is to use the VBA GetObject function. You can easily wrap this in your own function as shown in the IsAppRunning function below. The appName parameter can be obtained from the Windows Registry under the HKEY_CLASSES_ROOT section. Some examples are shown below.
Public Function IsAppRunning(appName As String) As Boolean
Dim objApp As Object
On Error GoTo NOT_RUNNING
Set objApp = GetObject(, appName)
IsAppRunning = Not (objApp Is Nothing)
Set objApp = Nothing
Exit Function
NOT_RUNNING:
IsAppRunning = False
Set objApp = Nothing
End Function
Const APP_NAME_EXCEL = "Excel.Application"
Const APP_NAME_WORD = "Word.Application"
Const APP_NAME_AUTOCAD = "AutoCAD.Application"
Const APP_NAME_AUTOCAD_R18 = "AutoCAD.Application.18"
Const APP_NAME_AUTOCAD_R16 = "AutoCAD.Application.16"
Const APP_NAME_MICROSTATION_V7 = "MicroStation.Application"
Const APP_NAME_MICROSTATION_V8 = "MicroStationDGN.Application"
Sub TestExcel()
MsgBox "Microsoft Excel is running = " _
& CStr(IsAppRunning(APP_NAME_EXCEL))
End Sub