11

VBA コードが実行されている現在の Excel インスタンスのプロセス ID を取得するにはどうすればよいですか? 同じキャプションを持つ 2 つ以上の 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 に答える