यह ट्यूटोरियल VBA आउट ऑफ़ मेमोरी एरर की व्याख्या करेगा।
वीबीए आउट ऑफ मेमोरी त्रुटि तब होती है जब एक्सेल ने मैक्रो चलाने के दौरान आपकी मशीन के सभी संसाधनों का उपयोग किया है और कोड की गणना या चलाने के लिए सचमुच स्मृति से बाहर हो जाता है। यह तब हो सकता है जब आपके पास बहुत सारे एप्लिकेशन चल रहे हों और एक्सेल में एक बड़ा मैक्रो चलाने का प्रयास करें, या शायद जब आपने एक्सेल में गलती से एक परपेचुअल लूप बनाया हो।
(वीबीए त्रुटियों के बारे में अधिक जानकारी के लिए हमारी त्रुटि प्रबंधन मार्गदर्शिका देखें)
स्मृति से बाहर त्रुटि के कारण
यदि कोई ऐसी कार्यपुस्तिका के साथ कार्य कर रहा है जिसमें अनेक कार्यपत्रक और हज़ारों पंक्तियाँ हैं, तो स्मृति त्रुटि हो सकती है। यदि हम एक लूप बनाते हैं जो बड़ी मात्रा में डेटा के साथ काम करता है, तो मेमोरी से बाहर त्रुटि हो सकती है। यह तब भी हो सकता है जब हम कई ऑब्जेक्ट्स के साथ काम कर रहे हों और प्रत्येक ऑब्जेक्ट को SET स्टेटमेंट के साथ सेट करें, लेकिन फिर प्रक्रियाओं या लूप के बीच ऑब्जेक्ट्स के संदर्भों को साफ़ न करें।
उदाहरण के लिए, यदि आपके पास एकाधिक शीट के साथ एकाधिक फ़ाइलें खुली हैं, तो निम्न लूप निश्चित रूप से स्मृति त्रुटि का कारण बन सकता है।
1234567891011121314 | सब टेस्टमेमरी ()कार्यपुस्तिका के रूप में मंद wbवर्कशीट के रूप में डिम WSडिम आई ऐज़ सिंगलअनुप्रयोग में प्रत्येक wb के लिए। कार्यपुस्तिकाएँwb.Sheets में प्रत्येक ws के लिएActiveCell = "A1048576" तक करेंएक्टिवसेल = 1 + आईमैं = मैं + 1ActiveCell.Offset(1, 0)। चुनेंकुंडलीअगला wsअगला डब्ल्यूबीअंत उप |
स्मृति से बाहर होने वाली त्रुटि को रोकना
रिलीज ऑब्जेक्ट्स
यदि हम लूप्स और ऑब्जेक्ट्स के साथ काम कर रहे हैं, तो हमें यह सुनिश्चित करने की ज़रूरत है कि हमने ऑब्जेक्ट को इस्तेमाल करने के बाद कुछ भी नहीं पर सेट किया है और इसकी अब आवश्यकता नहीं है - यह मेमोरी जारी करेगा।
वीबीए प्रोग्रामिंग | कोड जेनरेटर आपके लिए काम करता है!
सुनिश्चित करें कि एक्सेल का केवल एक उदाहरण चल रहा है
अगर हम बड़ी फाइलों और बड़ी मात्रा में डेटा के साथ काम कर रहे हैं, तो जांच लें कि आपके पास एक्सेल के कई सत्र नहीं खुले हैं - इसे सिर्फ एक बार खोलने की जरूरत है। इसे जांचने का एक तरीका है कि आप टास्क मैनेजर में जाएं और देखें कि एक्सेल के कितने इंस्टेंस चल रहे हैं।
दबाएँ सीटीएल+ऑल्ट+डिलीट कीबोर्ड पर,
पर क्लिक करें कार्य प्रबंधक और सुनिश्चित करें कि एक्सेल के चलने का केवल एक उदाहरण है। नीचे दिए गए ग्राफ़िक में, एक उदाहरण है, जिसमें 2 विंडो हैं।
हम टास्क मैनेजर में यह भी जांच सकते हैं कि पृष्ठभूमि में एक्सेल के चलने का कोई उदाहरण नहीं है (यानी दिखाई नहीं दे रहा है)।
टास्क मैनेजर में तब तक स्क्रॉल करें जब तक आप देखें पृष्ठभूमि प्रक्रियाएं और सुनिश्चित करें कि एक्सेल प्रोग्राम की उस सूची में नहीं है।
अपनी एक्सेल फ़ाइल का आकार जांचें
अक्सर ऐसी पंक्तियाँ और स्तंभ होते हैं जिन्हें आपकी कार्यपत्रकों में उन पंक्तियों और स्तंभों के नीचे पहुँचा जाता है जो वास्तव में उपयोग की जाती हैं। एक्सेल इन सेल में मेमोरी का उपयोग करता है - भले ही वे सेल खाली हों। दबाकर फ़ाइल का आकार जांचें CTRL+SHIFT+END कीबोर्ड पर यह देखने के लिए कि आपका सेल पॉइंटर कहां लैंड करता है। यदि यह आपके द्वारा उपयोग किए जा रहे अंतिम सेल के नीचे अच्छी तरह से उतरता है, तो सुनिश्चित करें कि आप सेल पॉइंटर के ऊपर की सभी खाली पंक्तियों और स्तंभों को हटा दें और फिर फ़ाइल को फिर से सहेजें - इससे आपकी एक्सेल फ़ाइल का आकार कम हो जाएगा।
मेमोरी चेक करने के अन्य तरीके
एक्सेल में मेमोरी को फ्री करने के कई अन्य तरीके हैं। यदि आप इसका उपयोग नहीं कर रहे हैं तो एक्सेल को बंद करना एक अच्छा विचार है, और फिर इसे बाद में खोलें - यह किसी भी मेमोरी को खाली कर देगा जिसे एक्सेल स्टोर कर रहा है क्योंकि यह मेमोरी को स्टोर करने के लिए जाता है, भले ही वर्कबुक खुली न हो! अपने पीसी पर अपडेट की जांच करके हमेशा सुनिश्चित करें कि आपके कार्यालय का संस्करण अद्यतित है और किसी भी वीबीए ऐड-इन की जांच करें जिसका उपयोग किया जा रहा है, लेकिन आप इसका उपयोग नहीं कर रहे हैं - आप और भी अधिक मेमोरी खाली करने के लिए इन्हें अनइंस्टॉल कर सकते हैं।