2008-10-04 15 views
9

क्या मानदंड मैं तय करने के लिए मैं इस तरह VBA कोड लिखने का उपयोग करना चाहिए:एक्सेल वीबीए में नए कीवर्ड का उपयोग करने और CreateObject को कॉल करने के बीच अंतर क्या हैं?

Set xmlDocument = New MSXML2.DOMDocument 

या इस तरह:

Set xmlDocument = CreateObject("MSXML2.DOMDocument") 

?

+0

यह भी देखें [प्रारंभिक/देर से बाध्यकारी प्रश्न का उत्तर] (http://stackoverflow.com/questions/10580/what-are-early-and-late-binding#10581)। –

उत्तर

10

जब तक चर के रूप में वस्तु के रूप में नहीं लिखा है

Dim xmlDocument as MSXML2.DOMDocument 
Set xmlDocument = CreateObject("MSXML2.DOMDocument") 

Dim xmlDocument as MSXML2.DOMDocument 
Set xmlDocument = New MSXML2.DOMDocument 

दोनों जल्दी बंधन का उपयोग के समान है। जबकि

Dim xmlDocument as Object 
Set xmlDocument = CreateObject("MSXML2.DOMDocument") 

देर से बाध्यकारी का उपयोग करता है। एमएसडीएन here देखें।

जब आप बाहरी रूप से उपलब्ध वस्तुओं को बना रहे हैं, तो नए ऑपरेटर के बीच कोई अंतर नहीं है, एक चर के रूप में एक घोषित घोषित करता है, और CreateObject फ़ंक्शन का उपयोग करता है।

नई आवश्यकता है कि एक प्रकार की लाइब्रेरी का संदर्भ दिया जाए। जबकि CreateObject रजिस्ट्री का उपयोग करता है।

CreateObject का उपयोग रिमोट मशीन पर ऑब्जेक्ट बनाने के लिए किया जा सकता है।

2

पूर्व के लिए आपको अपने आवेदन में टाइप लाइब्रेरी का संदर्भ होना चाहिए। यह आम तौर पर शुरुआती बाध्यकारी का उपयोग करेगा (माना जाता है कि आप ऑब्जेक्ट के बजाए MSXML2.DOMDocument के रूप में अपना चर घोषित करते हैं, जो आप शायद करेंगे), तो आमतौर पर तेज़ होगा और आपको इंटेलिजेंस समर्थन देगा।

उत्तरार्द्ध का उपयोग प्रोजेक्ट का उपयोग किए बिना किसी ऑब्जेक्ट का उदाहरण टाइप लाइब्रेरी की आवश्यकता के बिना किया जा सकता है। आम तौर पर आप देर से बाध्यकारी का उपयोग करेंगे।

आम तौर पर यदि आपके पास एक प्रकार की लाइब्रेरी है, और प्रारंभिक बाध्यकारी से लाभ होता है तो "जैसा नया" उपयोग करना बेहतर होता है।

+0

जो ने एक महत्वपूर्ण वीबी/वीबीए सुविधा सुविधा का उल्लेख किया जिसे मैं हाइलाइट करना चाहता हूं। यह अनुपस्थिति कम अनुभवी वीबी/वीबीए प्रोग्रामर के लिए भ्रम का स्रोत हो सकती है: इंटेलिजेंस। एफवाईआई- यह ड्रॉपडाउन सूची है जो कोड के ऑटो-पूर्ण होने के साथ सहायता करता है जैसा कि टाइप किया गया है। एक संबंधित सुविधा है जिसमें इसकी जड़ें उसी प्रणाली में हैं: ऑब्जेक्ट एक्सप्लोरर। एफवाईआई- यह दृश्य मेनू पर है और वीबीए में एफ 2 कीस्ट्रोक द्वारा उपयोग किया जाता है। शुरुआती बाध्यकारी ('नया' कीवर्ड का उपयोग करके), न तो इंटेलिजेंस और न ही ऑब्जेक्ट एक्सप्लोरर काम करेगा। – spinjector

3

तुम हमेशा

Set xmlDocument = CreateObject("MSXML2.DOMDocument")

इस बंधन मुद्दे के लिए अप्रासंगिक है का उपयोग करना चाहिए। केवल घोषणा बाध्यकारी निर्धारित करता है।

CreateObject का उपयोग करके विशेष रूप से प्रारंभिक और देर से बाध्यकारी के बीच स्विच करना आसान हो जाएगा, क्योंकि आपको केवल घोषणा रेखा को बदलना होगा।

दूसरे शब्दों में, अगर आप इस बारे में:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = CreateObject("MSXML2.DOMDocument")

फिर, लेट बाइंडिंग के लिए स्विच करने के लिए, आप केवल (As Object करने के लिए) पहली पंक्ति बदलना होगा।

आप इसे इस प्रकार लिखते हैं:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = New MSXML2.DOMDocument

तो आप लेट बाइंडिंग के लिए स्विच जब, आप दोनों पंक्तियां बदलना होगा।