2009-06-02 12 views

Odpowiedz

15

Możesz użyć tej metody, aby uzyskać bieżący identyfikator procesu.

Declare Function GetCurrentProcessId Lib "kernel32"() As Long 

This page ma dobry przegląd dokładnie, jak można to zrobić w różnych wersjach programu Excel.

+0

działa świetnie; zwróć uwagę, że w modułach obiektowych VBA (np. w module powiązanym ze skoroszytem programu Excel) musisz prefiksować deklarację z 'Prywatnym'. – mklement0

3

Jako n00b vba, kilka innych rzeczy nie wiedziałem

  1. Stwierdzenie Declare idzie w górę. VBA będzie narzekać, jeśli instrukcja deklaruje dodaje się po deklaracji sub

    Na przykład, to będzie działać

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

    Ale to nie będzie działać

    Sub Update 
        ... 
        ... 
    End Sub 
    
    Declare Function GetCurrentProcessId Lib "kernel32"() As Long 
    
  2. Oto jak wyświetlić PID w skrzynce z wiadomościami w vbscript

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

Nadzieja to pomaga komuś

+0

I dlaczego zostało to odrzucone? Czy osoba zainteresowana może wyjaśnić? – Shreyas

1

Moje rozwiązanie w programie Excel 2013: w nowym module I dodaje następujący kod:

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

Public Sub Test() 
    Debug.Print GetCurrentProcessId 
End Sub 
+0

++ do wyświetlania "Prywatne" i pełny przykład. – mklement0

Powiązane problemy