How can I get the process ID of the current Excel instance that my VBA code is running in? I don\'t want to asking for it by the name in the caption, which causes problems when
You can use this method to get the current process id.
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
This page has a good overview of exactly how you can do it in various versions of excel.
My solution in Excel 2013: in a new module, I added the following code:
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Sub Test()
Debug.Print GetCurrentProcessId
End Sub
As a vba n00b, some other things I did not know
The Declare statement goes at the top. VBA will complain if the declare statement is inserted after a sub declaration
For example, this will work
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Sub Update
...
...
End Sub
But this will not work
Sub Update
...
...
End Sub
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Here is how we display the PID in a messagebox in vbscript
Set app = CreateObject("Excel.Application")
MsgBox("Excel PID is " + CStr(app.Run("GetCurrentProcessId")))
Hope this helps someone