¿Cómo obtener el identificador de proceso de la instancia actual de Excel, a través de VBA, sin necesidad de utilizar el título?

StackOverflow https://stackoverflow.com/questions/942058

  •  09-09-2019
  •  | 
  •  

Pregunta

¿Cómo puedo obtener el identificador de proceso de la instancia actual de Excel que mi código VBA se ejecuta en? Yo no quiero pedir él por el nombre en el título, lo que provoca problemas cuando tenga dos o más instancias de Excel con el mismo título.

¿Fue útil?

Solución

Puede utilizar este método para obtener la corriente Identificación del proceso.

Declare Function GetCurrentProcessId Lib "kernel32" () As Long

Esta página tiene una buena visión general de exactamente cómo puede hacerlo en varias versiones de Excel.

Otros consejos

Como un n00b VBA, algunas otras cosas que no conocía

  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

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top