2009-06-02 8 views
8

मैं वर्तमान एक्सेल इंस्टेंस की प्रक्रिया आईडी कैसे प्राप्त कर सकता हूं कि मेरा वीबीए कोड चल रहा है? मैं इसे कैप्शन में नाम से नहीं पूछना चाहता, जिससे समस्याएं होती हैं जब मेरे पास एक ही कैप्शन के साथ दो या अधिक एक्सेल उदाहरण होते हैं।कैप्शन का उपयोग किए बिना, वीबीए के माध्यम से, मौजूदा एक्सेल इंस्टेंस की प्रक्रिया आईडी कैसे प्राप्त करें?

उत्तर

15

आप वर्तमान प्रक्रिया आईडी प्राप्त करने के लिए इस विधि का उपयोग कर सकते हैं।

Declare Function GetCurrentProcessId Lib "kernel32"() As Long 

This page बिल्कुल का एक अच्छा सिंहावलोकन कैसे आप एक्सेल के विभिन्न संस्करणों में यह कर सकते हैं नहीं है।

+0

बढ़िया काम करता है; ध्यान दें कि वीबीए ऑब्जेक्ट मॉड्यूल में (उदा।, एक्सेल वर्कबुक से जुड़े मॉड्यूल में), आपको 'निजी' के साथ घोषणा को उपसर्ग करना होगा। – mklement0

3

एक 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. यहाँ कैसे हम पीआईडी ​​प्रदर्शित है vbscript में एक संदेश बॉक्स में

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

आशा इस कोई मदद करता है

+0

और यह क्यों गिराया गया था? क्या डाउनवॉटर कृपया समझा सकता है? 'निजी' और एक पूर्ण उदाहरण दिखाने के लिए – Shreyas

1

एक्सेल 2013 में मेरे समाधान: एक नए मॉड्यूल में, मैं निम्नलिखित कोड कहा:

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

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

++। – mklement0

संबंधित मुद्दे