Wie kann ich die Prozess-ID der aktuellen Excel-Instanz abrufen, in der mein VBA-Code ausgeführt wird? Ich möchte nicht nach dem Namen in der Beschriftung fragen, der Probleme verursacht, wenn ich zwei oder mehr Excel-Instanzen mit der gleichen Beschriftung habe.Wie erhalten Sie die Prozess-ID der aktuellen Excel-Instanz über VBA, ohne die Beschriftung zu verwenden?
Antwort
Sie können diese Methode verwenden, um die aktuelle Prozess-ID abzurufen.
Declare Function GetCurrentProcessId Lib "kernel32"() As Long
This page hat einen guten Überblick über genau, wie Sie es in verschiedenen Versionen von Excel zu tun.
Als vba n00b, einige andere Dinge, die ich wusste nicht,
Die Anweisung Declare an der Spitze geht. VBA wird sich beschweren, wenn die declare-Anweisung nach einer Unter Erklärung eingefügt wird
Zum Beispiel diese
Declare Function GetCurrentProcessId Lib "kernel32"() As Long Sub Update ... ... End Sub
arbeiten Aber dies wird nicht funktionieren
Sub Update ... ... End Sub Declare Function GetCurrentProcessId Lib "kernel32"() As Long
Hier ist, wie wir die PID Anzeige in einer MessageBox im Vbscript
Set app = CreateObject("Excel.Application") MsgBox("Excel PID is " + CStr(app.Run("GetCurrentProcessId")))
Hoffnung hilft dieses jemand
Und warum wurde das abgelehnt? Kann der Downvoter das bitte erklären? – Shreyas
Meine Lösung in Excel 2013: in einem neuen Modul, ich den folgenden Code hinzugefügt:
Private Declare Function GetCurrentProcessId Lib "kernel32"() As Long
Public Sub Test()
Debug.Print GetCurrentProcessId
End Sub
++ für die Darstellung 'Private' und ein vollständiges Beispiel. – mklement0
Arbeiten groß; Beachten Sie, dass Sie in VBA-Objektmodulen (z. B. in einem Modul, das mit einer Excel-Arbeitsmappe verknüpft ist), der Deklaration "Private" voranstellen müssen. – mklement0