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

时间:2009-06-02 21:45:17

标签: excel vba excel-vba pid

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

3 个答案:

答案 0 :(得分:16)

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

Declare Function GetCurrentProcessId Lib "kernel32" () As Long

This page很好地概述了如何在各种版本的Excel中完成它。

答案 1 :(得分: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")))
    
  3. 希望这有助于某人

答案 2 :(得分:2)

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

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

Public Sub Test()
    Debug.Print GetCurrentProcessId
End Sub