वीबीए स्वचालन त्रुटि

यह ट्यूटोरियल समझाएगा कि VBA ऑटोमेशन एरर का क्या अर्थ है और यह कैसे होता है।

एक्सेल ऑब्जेक्ट्स से बना है - वर्कबुक ऑब्जेक्ट, वर्कशीट ऑब्जेक्ट, रेंज ऑब्जेक्ट और सेल ऑब्जेक्ट नाम पर लेकिन कुछ। प्रत्येक वस्तु में कई गुण और विधियाँ होती हैं जिनके व्यवहार को VBA कोड से नियंत्रित किया जा सकता है। यदि VBA कोड सही ढंग से प्रोग्राम नहीं किया गया है, तो एक ऑटोमेशन त्रुटि हो सकती है। यह वीबीए में अधिक निराशाजनक त्रुटियों में से एक है क्योंकि यह अक्सर बिना किसी स्पष्ट कारण के पॉप अप हो सकता है जब आपका कोड पूरी तरह से ठीक दिखता है!

(वीबीए त्रुटियों के बारे में अधिक जानकारी के लिए हमारी त्रुटि प्रबंधन मार्गदर्शिका देखें)

एक वेरिएबल का जिक्र करते हुए अब सक्रिय नहीं है

एक स्वचालन त्रुटि तब हो सकती है जब आप किसी कार्यपुस्तिका या कार्यपत्रक को चर के माध्यम से संदर्भित कर रहे हों, लेकिन चर अब सक्रिय नहीं है।

1234567891011 उप परीक्षण स्वचालन ()स्ट्रिंग के रूप में मंद strFileकार्यपुस्तिका के रूप में मंद wb'फ़ाइल खोलें और कार्यपुस्तिका चर सेट करें'strFile = Application.GetOpenFilenamewb = वर्कबुक सेट करें। ओपन (strFile)'कार्यपुस्तिका बंद करें'डब्ल्यूबी.बंद'कार्यपुस्तिका को सक्रिय करने का प्रयास करें'wb.सक्रिय करेंअंत उप

जब हम ऊपर दिए गए कोड को चलाते हैं, तो हमें एक ऑटोमेशन त्रुटि मिलेगी। यह इस तथ्य के कारण है कि हमने एक कार्यपुस्तिका खोली है और उस कार्यपुस्तिका में एक चर निर्दिष्ट किया है। हमने तब कार्यपुस्तिका को बंद कर दिया है लेकिन कोड की अगली पंक्ति में हम बंद कार्यपुस्तिका को सक्रिय करने का प्रयास करते हैं। यह त्रुटि का कारण बनेगा क्योंकि चर अब सक्रिय नहीं है।

यदि हम किसी कार्यपुस्तिका को सक्रिय करना चाहते हैं, तो हमें सबसे पहले कार्यपुस्तिका को खोलना होगा!

मेमोरी अधिभार

यह त्रुटि कभी-कभी तब भी हो सकती है यदि आपके पास लूप है और आप लूप के दौरान किसी ऑब्जेक्ट को साफ़ करना भूल जाते हैं। हालाँकि, यह केवल कभी-कभी ही हो सकता है, और अन्य नहीं- जो एक कारण है कि यह त्रुटि इतनी कष्टप्रद हो सकती है।

उदाहरण के लिए नीचे दिए गए इस कोड को लें:

1234567891011121314151617 उप सम्मिलित चित्र ()डिम आई अस इंटीजरवस्तु के रूप में मंद shpमैं = 1 से 100 . के लिएवर्कशीट्स के साथ ("शीट 1")'ऑब्जेक्ट वैरिएबल सेट करें'सेट shp = .OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, DisplayAsIcon:=False, left:=.Cells(i, "A").Left, Top:=.Cells( मैं, "ए")। शीर्ष, चौड़ाई: = 264, ऊंचाई: = 124)के साथ समाप्त करनाshp के साथ.Object.PictureSizeMode = 3'तस्वीर लोड करें'.Object.Picture = LoadPicture("C:\data\image" & i & ".jpg").Object.BorderStyle = 0.ऑब्जेक्ट.बैकस्टाइल = 0के साथ समाप्त करनाअगला मैंअंत उप

चर को एक वस्तु के रूप में घोषित किया जाता है, और फिर सेट कीवर्ड का उपयोग ऑब्जेक्ट को इमेज असाइन करने के लिए किया जाता है। ऑब्जेक्ट को फिर एक छवि के साथ पॉप्युलेट किया जाता है और एक्सेल शीट में डाला जाता है जिसमें कुछ स्वरूपण एक ही समय में होते हैं। फिर हम एक्सेल शीट में 100 इमेज डालने के लिए कोड में एक लूप जोड़ते हैं। कभी-कभी यह एक स्वचालन त्रुटि का कारण बनता है, लेकिन कभी-कभी ऐसा नहीं होता - निराशा होती है, है ना?

इस समस्या का समाधान यह है कि ऑब्जेक्ट को लूप में सेट करके ऑब्जेक्ट वेरिएबल को साफ़ किया जाए कुछ नहीं - यह मेमोरी को मुक्त करेगा और त्रुटि को रोकेगा।

12345678910111213141516171819 उप सम्मिलित चित्र ()डिम आई अस इंटीजरवस्तु के रूप में मंद shpमैं = 1 से 100 . के लिएवर्कशीट्स के साथ ("शीट 1")'ऑब्जेक्ट वैरिएबल सेट करें'सेट shp = .OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, DisplayAsIcon:=False, left:=.Cells(i, "A").Left, Top:=.Cells( मैं, "ए")। शीर्ष, चौड़ाई: = 264, ऊंचाई: = 124)के साथ समाप्त करनाshp के साथ.Object.PictureSizeMode = 3'तस्वीर लोड करें'.Object.Picture = LoadPicture("C:\data\image.jpg").Object.BorderStyle = 0.ऑब्जेक्ट.बैकस्टाइल = 0के साथ समाप्त करना'ऑब्जेक्ट वैरिएबल साफ़ करें'सेट shp = कुछ नहींअगला मैंअंत उप

डीएलएल त्रुटियां और विंडोज़ अपडेट करना

कभी-कभी त्रुटि होती है और वीबीए कोड के भीतर कुछ भी नहीं किया जा सकता है। उपयोग किए जा रहे डीएलएल को फिर से पंजीकृत करना, यह सुनिश्चित करना कि हमारा विंडोज अप टू डेट है और अंतिम उपाय के रूप में, रजिस्ट्री चेक चलाना कभी-कभी केवल वही चीजें होती हैं जो इस त्रुटि को दूर करने के लिए काम कर सकती हैं।

इस त्रुटि से बचने का एक अच्छा तरीका यह सुनिश्चित करना है कि त्रुटि ट्रैप का उपयोग कर रहे हैं एरर गो टू या ऑन एरर रिज्यूमे अगला दिनचर्या

wave wave wave wave wave