Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine if application is running with Excel

Tags:

excel

vba

Goal

Have an Excel file with a "Search" button that opens a custom program. This program is used for researches. If the program is already opened when the user clicks on the button, make it popup and focus on that given program.

Current Situation

Here's the code I'm trying to use to make it work:

Search Button

Private Sub btnSearch_Click()
    Dim x As Variant
    Dim Path As String

    If Not IsAppRunning("Word.Application") Then
        Path = "C:\Tmp\MyProgram.exe"
        x = Shell(Path, vbNormalFocus)
    End If
End Sub

IsAppRunning()

Function IsAppRunning(ByVal sAppName) As Boolean
    Dim oApp As Object
    On Error Resume Next
    Set oApp = GetObject(, sAppName)
    If Not oApp Is Nothing Then
        Set oApp = Nothing
        IsAppRunning = True
    End If
End Function

This code will work only when I put "Word.Application" as the executable. If I try to put "MyProgram.Application" the function will never see the program is running. How can I find that "MyProgram.exe" is currently opened?

Further more, I'd need to put the focus on it...

like image 946
Alex Avatar asked Apr 22 '15 20:04

Alex


People also ask

How to determine if an application is available using VBA in Excel?

Determine if an application is available using VBA in Microsoft Excel. To find out the status of any particular application available or running in Microsoft Excel, take a look at this article. We will use VBA code to check to return “True”, if the application is available or running or return and “False” if not.

How to determine if a program is running with Excel?

Determine if application is running with Excel. Goal. Have an Excel file with a "Search" button that opens a custom program. This program is used for researches. If the program is already opened when the user clicks on the button, make it popup and focus on that given program.

How to check if outlook is installed or running in Excel?

To determine if Outlook Application is currently running or not; in any cell enter the formula as =ApplicationIsRunning ("Outlook.Application") Conclusion: This way we can check the status of specific application is install & whether it’s running or not.

How to identify the Outlook application is running or available?

To identify the Outlook application is running or available; we need to follow the below steps to launch VB editor: To determine if Outlook Application is currently running or not; in any cell enter the formula as =ApplicationIsRunning ("Outlook.Application")


2 Answers

You can check this more directly by getting a list of open processes.

This will search based on the process name, returning true/false as appropriate.

Sub exampleIsProcessRunning()  
    Debug.Print IsProcessRunning("MyProgram.EXE")
    Debug.Print IsProcessRunning("NOT RUNNING.EXE")
   
End Sub

Function IsProcessRunning(process As String)
    Dim objList As Object
    
    Set objList = GetObject("winmgmts:") _
        .ExecQuery("select * from win32_process where name='" & process & "'")
    
    IsProcessRunning = objList.Count > 0
End Function
like image 175
enderland Avatar answered Oct 23 '22 10:10

enderland


Here's how I brought the search window to front:

Private Const SW_RESTORE = 9

Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Sub btnSearch_Click()
    Dim x As Variant
    Dim Path As String

    If IsProcessRunning("MyProgram.exe") = False Then
        Path = "C:\Tmp\MyProgram.exe"
        x = Shell(Path, vbNormalFocus)
    Else
        Dim THandle As Long
        THandle = FindWindow(vbEmpty, "Window / Form Text")
        Dim iret As Long
        iret = BringWindowToTop(THandle)
        Call ShowWindow(THandle, SW_RESTORE)
    End If
End Sub

Now if the window was minimized and the user clicks the search button again, the window will simply pop up.

like image 33
Alex Avatar answered Oct 23 '22 12:10

Alex