2012-04-04 11 views
14

मैं अगर वहाँ एक रास्ता के रूप में यह वर्कशीट मैं उदाहरण के लिए कॉल कर सकते हैं के लिए Application.Runवीबीए में किसी अन्य विशिष्ट कार्यपुस्तिका से फ़ंक्शन को कैसे कॉल करें?

का उपयोग किए बिना एक विशिष्ट कार्यपत्रक के लिए संभव है एक और निर्दिष्ट कार्यपुस्तिका के मॉड्यूल से एक VBA समारोह या विधि कॉल करने के लिए है जानना चाहते हैं :

ActiveSheet.MyTest() 

अगर MyTest चादर मॉड्यूल

में परिभाषित किया गया है लेकिन मैं एक समारोह जो एक मॉड्यूल

मैंने कोशिश में परिभाषित किया गया है कॉल करना चाहते हैं:

ActiveWorkbook.MyTestModule() 
ActiveWorkbook.VBProject.VBComponents("MyModule").MyTestModule(myArg) 

जो एक त्रुटि वस्तु पैदा करने के लिए इस विधि का समर्थन नहीं करता काम नहीं करते

मैं

Application.Run(ActiveWorkbook.name & "!MyTestModule", myArg) 

कह सकते हैं लेकिन मैं Application.Run की त्रुटि से निपटने के बारे में सुनिश्चित नहीं कर रहा हूँ और मुझे सीधे विधि

+0

http: // stackoverflow .com/search? q = application.run +% 5Bexcel% 5D – Fionnuala

+1

दिए गए एकमात्र उत्तर एप्लिकेशन का उपयोग करना है। मैं जो भी करने का प्रयास करता हूं उसे चलाएं OID। या मुझे लगता है कि यह संभव नहीं है? – Gutti

उत्तर

18

कार्यपुस्तिका में आप कॉल करना चाहते हैं (मैं इसे ए कॉल करूंगा) में, आप उस कार्यपुस्तिका का संदर्भ जोड़ सकते हैं जिसे आप कॉल करना चाहते हैं (मैं इसे कॉल करूंगा बी) इस प्रकार है:

  1. कार्यपुस्तिका एक में, (उदाहरण के लिए, Alt + F11 दबाकर) आवेदन खिड़की के लिए माइक्रोसॉफ्ट विजुअल बेसिक खोलें।
  2. उपकरण, संदर्भ का चयन करें।
  3. प्रकट होने वाले संदर्भ संवाद में, ब्राउज़ करें चुनें।
  4. दिखाई देने वाले संदर्भ जोड़ें संवाद में, टाइप बॉक्स की फ़ाइलों से Microsoft Excel फ़ाइलें चुनें, उस फ़ाइल का चयन करें जिसे आप कॉल करना चाहते हैं (बी), और खोलें चुनें।
  5. संदर्भ संवाद बंद करने के लिए ठीक चुनें।

फ़ाइल एक में, आप फिर फ़ाइल बी में सार्वजनिक मॉड्यूल स्तर के कार्यों को कॉल करने के रूप में यदि वे फ़ाइल ए में थे किसी भी नामकरण विवादों का समाधान करने में सक्षम होना चाहिए, आप के लिए "परियोजना का नाम" के आधार पर कॉल कर सकते हैं उपसर्ग प्रोजेक्ट गुण संवाद के सामान्य टैब में निर्दिष्ट फ़ाइल बी (अनुप्रयोग उपकरण मेनू के लिए Microsoft Visual Basic में गुण कमांड के माध्यम से सुलभ)। उदाहरण के लिए, यदि फ़ाइल बी के लिए "प्रोजेक्ट नेम" "VBAProjectB" था, तो आप सिंटैक्स VBAProjectB.F का उपयोग करके फ़ाइल ए से फ़ंक्शन एफ को कॉल कर सकते हैं।

+1

नोट: ऐसा करने के लिए, 'VBAProject' नाम के रूप में उपयोग न करें, या यह संघर्ष करेगा। – Envite

-2

मान लें कि आपके पास 2 कार्यपुस्तिकाएं "शीट 1" और "शीट 2" हैं।

एक सार्वजनिक "Sheet2" में विधि DisplayMessage कहा जाता है।

"Sheet1" आप यह कर सकते हैं:

Public Sub SetParametersInSheet2(sParam As String) 
With Sheets("Sheet2") 
    .Range("B3").Value = sParam 'range in Sheet2 

    ' --- calling function from another worksheet 
    .DisplayMessage "from here!" 
End With 

End Sub

"Sheet2" में विधि:

Public Sub DisplayMessage(sMess As String) 
    Dim dCurrent As Date 
    Dim sFormattedMess As String 
    sFormattedMess = FormatDateTime(Now, vbLongTime) & ": " & sMess 
    Range("I2").Value = sFormattedMess 

End Sub

+4

कार्यपुस्तिका वर्कशीट के समान नहीं है – himura

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

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