Determine if an Application is Running

Published on October 1, 2009

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

Tags:
Like this article? Share it!

Leave a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Privacy Policy