11

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

4

3 回答 3

18

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

Declare Function GetCurrentProcessId Lib "kernel32" () As Long

这个页面很好地概述了如何在各种版本的 excel 中做到这一点。

于 2009-06-02T21:52:14.053 回答
3

作为一个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")))
    

希望这可以帮助某人

于 2012-09-12T14:58:23.847 回答
3

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

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long

Public Sub Test()
    Debug.Print GetCurrentProcessId
End Sub
于 2015-06-04T14:41:25.137 回答