How to get the process ID of the current Excel instance, through VBA, without using the caption?

前端 未结 3 2196
无人共我
无人共我 2021-02-20 03:38

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

相关标签:
3条回答
  • 2021-02-20 03:54

    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.

    0 讨论(0)
  • 2021-02-20 04:14

    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
    
    0 讨论(0)
  • 2021-02-20 04:19

    As a vba n00b, some other things I did not know

    1. 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
      
    2. 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

    0 讨论(0)
提交回复
热议问题