كيفية الحصول على معرف عملية مثيل Excel الحالي، من خلال VBA، دون استخدام التسمية التوضيحية؟

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

  •  09-09-2019
  •  | 
  •  

سؤال

كيف يمكنني الحصول على معرف عملية مثيل Excel الحالي الذي يعمل عليه رمز VBA الخاص بي؟ لا أريد أن أسأله عن طريق الاسم في التسمية التوضيحية، مما يؤدي إلى مشاكل عندما يكون لدي مثيلتين أو أكثر من مثيلات Excel نفس التسمية التوضيحية.

هل كانت مفيدة؟

المحلول

يمكنك استخدام هذه الطريقة للحصول على معرف العملية الحالية.

Declare Function GetCurrentProcessId Lib "kernel32" () As Long

هذه الصفحة لديه نظرة عامة جيدة على الطريقة بالضبط كيف يمكنك القيام بذلك في إصدارات مختلفة من Excel.

نصائح أخرى

باعتبارها VBA N00B، بعض الأشياء الأخرى التي لم أكن أعرفها

  1. بيان إعلان يذهب في الأعلى. سوف تشكو VBA إذا تم إدراج بيان الإعلان بعد إعلان فرعي

    على سبيل المثال، هذا سيعمل

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

    ولكن هذا لن يعمل

    Sub Update
      ...
      ...
    End Sub
    
    Declare Function GetCurrentProcessId Lib "kernel32" () As Long
    
  2. فيما يلي كيفية عرض PID في صندوق Message في VBScript

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

أمل أن هذا يساعد شخصاما

حلاي في Excel 2013: في وحدة نمطية جديدة، أضفت التعليمات البرمجية التالية:

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

Public Sub Test()
    Debug.Print GetCurrentProcessId
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top