2009-06-02 21 views

Respuesta

15

Puede utilizar este método para obtener la identificación del proceso actual.

Declare Function GetCurrentProcessId Lib "kernel32"() As Long 

This page tiene una buena visión general de cómo exactamente se puede hacer en varias versiones de Excel.

+0

Funciona muy bien; tenga en cuenta que en los módulos de objetos de VBA (por ejemplo, en un módulo asociado a un libro de Excel), debe poner un prefijo a la declaración con 'Privado'. – mklement0

3

Como n00b VBA, algunas otras cosas que no sabían

  1. La instrucción Declare va en la parte superior. VBA se quejará si se introduce la instrucción declare después de una declaración sub

    Por ejemplo, esto va a funcionar

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

    Pero esto no funcionará

    Sub Update 
        ... 
        ... 
    End Sub 
    
    Declare Function GetCurrentProcessId Lib "kernel32"() As Long 
    
  2. Aquí es cómo mostramos el PID en un cuadro de mensaje en vbscript

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

Espero que esto ayude a alguien

+0

¿Y por qué se bajó este voto? ¿Puede el infractor explicar por favor? – Shreyas

1

Mi solución en Excel 2013: en un módulo nuevo, he añadido el siguiente código:

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

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

++ para mostrar 'Privado' y un ejemplo completo. – mklement0

Cuestiones relacionadas