如何通过VBA获取当前Excel实例的进程ID,而不使用标题?

我如何获得我的VBA代码运行的当前Excel实例的进程ID? 我不想通过标题中的名称来询问它,当我有两个或多个具有相同标题的Excel实例时,会导致问题。

您可以使用此方法获取当前进程ID。

Declare Function GetCurrentProcessId Lib "kernel32" () As Long 

这个页面很好地概括了你如何在不同版本的Excel中做到这一点。

作为vba n00b,还有一些我不知道的东西

  1. Declare语句位于顶部。 如果在子声明之后插入声明语句,VBA将会投诉

    例如,这将工作

     Declare Function GetCurrentProcessId Lib "kernel32" () As Long Sub Update ... ... End Sub 

    但是这不行

     Sub Update ... ... End Sub Declare Function GetCurrentProcessId Lib "kernel32" () As Long 
  2. 以下是我们如何在vbscript中的消息框中显示PID

     Set app = CreateObject("Excel.Application") MsgBox("Excel PID is " + CStr(app.Run("GetCurrentProcessId"))) 

希望这有助于某人

我在Excel 2013中的解决scheme:在一个新的模块中,我添加了以下代码:

 Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Public Sub Test() Debug.Print GetCurrentProcessId End Sub