Excel 2013 से Excel 2010 में डाउनग्रेड करते समय VBA खो गया


3

मैं विंडोज 7 पर हूं। अतीत में मैं एक्सेल 2003 का उपयोग कर रहा था। मैंने ऑफिस 2013 स्थापित किया और पाया कि मेरा ऑफिस 2003 बरकरार था और मैं इन संस्करणों को चला सकता था। मैंने एक्सेल 2013 और वीबीए कोड का उपयोग करके कुछ वर्कशीट को अपडेट किया।

मुझे बताया गया कि मुझे Office 2010 का उपयोग करने की आवश्यकता है (मैं कारणों में नहीं जाऊंगा) इसलिए मैंने Office 2013 की स्थापना रद्द कर दी और Office 2010 (कॉर्पोरेट लाइसेंस) स्थापित कर दिया। जब मैंने 2010 में एक्सेल 2013 का उपयोग करके स्प्रैडशीट को खोला, तो मुझे एप्लिकेशन संदेश के लिए एक Microsoft Visual Basic मिल गया:

कक्षा पंजीकृत नहीं है। सीएलएसआईडी के साथ वस्तु की तलाश: (AC9F2F90-E877-11DE-9F68-00AA00574A4F)

जब मैं ठीक से हिट करता हूं, तो मुझे एक्सेल संदेश मिलता है

Excel को name_of_spreadsheet .xls में अपठनीय सामग्री मिली । क्या आप इस कार्यपुस्तिका की सामग्री को पुनर्प्राप्त करना चाहते हैं?

यदि मैं हाँ का चयन करता हूं तो मुझे एक संदेश मिलता है जो पढ़ता है

एक्सेल अपठनीय सामग्री की मरम्मत या हटाकर फ़ाइल को खोलने में सक्षम था। Visual Basic प्रोजेक्ट खो दिया है। मरम्मत PivotTable रिपोर्ट में की गई थी, कार्यपुस्तिका और लॉस्ट ActiveX नियंत्रण से एक या अधिक अमान्य सशर्त स्वरूप हटा दिए गए थे।

अब VBA कोड नहीं मिला है। कार्यपुस्तिका खुलती है और सामान्य दिखती है, लेकिन VBA पर चलने वाले बटन काम नहीं करते हैं, और VBA ( Alt+ F11) खोलने पर , मुझे कोई भी मॉड्यूल दिखाई नहीं देता है।

मैंने FM20.dllregsrv32.exe का उपयोग करके चलाने की कोशिश की और मुझे एक संदेश मिला जिसमें कहा गया है:

मॉड्यूल fm20.dll लोड करने में विफल रहा। सुनिश्चित करें कि बाइनरी को निर्दिष्ट पथ पर संग्रहीत किया गया है या बाइनरी या आश्रित .DLL फ़ाइलों के साथ समस्याओं की जांच करने के लिए इसे डीबग करें। निर्दिष्ट मॉड्यूल पाया नहीं जा सका"।

लेकिन मैं FM20.dll में उपनिर्देशिका से regsrv32 भागा।

मुझे लगता है कि मेरी समस्याओं को Visual Basic प्रोजेक्ट और / या ActiveX नियंत्रण खोने के साथ करना होगा।

Excel 2013 को निकालने और Excel 2010 को स्थापित करने से पहले मुझे VBA कोड खोजने में सक्षम होने के लिए क्या करने की आवश्यकता है?

जवाबों:


3

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैंने दूसरे कंप्यूटर से एक अलग fm20.dll फ़ाइल का उपयोग किया जो अभी तक "अपग्रेड" नहीं हुई थी। Fm20.dll का पंजीकरण ठीक चला और मेरी समस्या दूर हो गई। ऐसा लगता है कि fm20.dll फ़ाइल दूषित थी। कोई भी VBA जिसमें Userforms प्रभावित होते हैं, लगता है। Excel 2010 त्रुटि जिसे मैंने पुनर्प्राप्त किया था: "इस कार्यपुस्तिका के लिए अनुप्रयोगों (VBA) मैक्रो के लिए Visual Basic दूषित है और हटा दिया गया है। मैक्रो भ्रष्टाचार वर्तमान फ़ाइल में सबसे अधिक संभावना है। मैक्रोज़ को पुनर्प्राप्त करने के लिए, एक बैकअप प्रतिलिपि खोलें। अगर आपके पास एक है तो इस फाइल का। केवल कोड के साथ VBA कार्यपुस्तिका खोलने का एक सरल परीक्षण, जिसने काम किया, और एक उपयोगकर्ता नाम के साथ एक सरल फ़ाइल जिसमें उस पर एक लेबल था जिसमें कोई कोड नहीं था, जो विफल रहा, मुझे fm20.dll फ़ाइल तक ले गया। मुझे एक ही संदेश मिला है कि समस्या प्रणाली पर fm20.dll फ़ाइल को पंजीकृत करने की कोशिश करें, फ़ाइल खराब थी। एक नए fm20.dll को एक अच्छी प्रणाली से कॉपी किया गया, पंजीकरण ठीक हुआ, समस्या दूर हुई।


2

Office 2013 VBA 7.1 स्थापित करता है। इसके साथ, FM20.dll का एक अद्यतन संस्करण - जो बदले में VC10 के पुनर्वितरण पर निर्भरता रखता है - विशेष रूप से msvcr100.dll। जब VBA 7.1 की स्थापना रद्द की जाती है - यह FM20.dll को नहीं हटाता है - लेकिन सबसे अधिक संभावना वाला अनुप्रयोग VC10 रिडिस्ट को हटा देगा। जब यह होता है, तो FM20.dll टूट जाता है। ऐसा नहीं है कि यह भ्रष्ट है - यह सिर्फ अधूरा है। (मैंने Visual Studio टूल, Depends.exe का उपयोग करके इसे ट्रैक किया है)

समस्या यह है कि VBA 6.x का उपयोग करने वाले एप्लिकेशन को फिर से इंस्टॉल करना - FM20.dll के इस नए संस्करण को अधिलेखित नहीं करेगा और इसलिए फ़ाइल टूटी हुई दिखाई देती है।

ऐसा लगता है कि यह VBA 7.1 इंस्टॉलर में एक बग है जो इस फाइल को साफ नहीं करता है। आपको विकल्प चुनने होंगे। FM20.dll हटाएं और अपने पुराने ऐप को सुधारें - या VC10 को फिर से इंस्टॉल करें।


1

इस त्रुटि को सुधारने में इस ब्लॉगपोस्ट ने मेरी मदद की:
https://dynamicsgpland.blogspot.in/2009/11/vba-error-class-not-registered-looking.html

VBA त्रुटि: कक्षा पंजीकृत नहीं है। सीएलएसआईडी के साथ वस्तु की तलाश: {AC9F2F90-E877-11CE-9F68-00AA00574A4F}

मुझे पता है, मुझे पता है, यह इतनी स्पष्ट त्रुटि है, है ना? मेरा मतलब है, वास्तव में, क्या कोई डायनेमिक्स जीपी दुनिया में बचा है जो इस स्पष्ट वर्ग आईडी के बारे में पूछने के लिए आपको झांसा नहीं देगा?

इसलिए मैंने हाल ही में एक नए प्रोजेक्ट के लिए एक नया डेवलपमेंट वर्चुअल सर्वर बनाया है, कुछ ऐसा जो मैंने बिना किसी समस्या के दर्जनों बार किया है। लेकिन किसी कारण से, इस बार मैं डायनेमिक्स जीपी के साथ कुछ अजीब समस्याओं में भाग गया। उनमें से एक यह VBA त्रुटि थी:

यहाँ छवि विवरण दर्ज करें

यह एक ताजा विंडोज सर्वर 2008 x64 वर्चुअल सर्वर, एसक्यूएल सर्वर 2005 एसपी 3, और डायनेमिक्स जीपी 10 एफपी 1 पर था, जिसमें एसपी 4 स्थापित था। मेरे पास विजुअल स्टूडियो या ऑफिस स्थापित नहीं था, जो मुझे यकीन है कि त्रुटि का कारण है।

जब भी मैंने VBA में उपयोगकर्ता फ़ॉर्म फ़ाइल आयात करने की कोशिश की, या जब भी मैंने एक नया उपयोगकर्ता फ़ॉर्म सम्मिलित करने का प्रयास किया, तो त्रुटि हुई।

मैंने बाद में पाया कि यह त्रुटि स्पष्ट रूप से MBS KB अनुच्छेद 961568 में वर्णित एक प्रकार का संस्करण है:

"त्रुटियां लोड के दौरान हुईं" या जब आप एक उपयोगकर्ता के रूप में एक पैकेज फ़ाइल आयात करते हैं: क्लास {C62A69F0-16DC-11CE-9E98-00AA00574A4F} नियंत्रण frmXXX एक लोड नियंत्रण वर्ग नहीं था।

उस समय, मुझे पता था कि इस संभावना का मतलब है कि एक DLL सर्वर पर पंजीकृत नहीं था, लेकिन यद्यपि उन सुंदर GUID को देखने के लिए एक खुशी है, वे औसत मानव के लिए कुछ भी नहीं बताते हैं, जिसके लिए DLL पंजीकृत नहीं है।

एक शॉर्टकट के रूप में, मैंने एक सर्वर पर स्विच किया जो मुझे पता था कि VBA में उपयोगकर्ता प्रपत्रों के साथ कोई समस्या नहीं है और GUID के लिए रजिस्ट्री की खोज की है। उस खोज ने मुझे बताया कि समस्या यह थी कि FM20.dll फ़ाइल पंजीकृत नहीं थी।

उस फ़ाइल नाम के लिए Googling करने के बाद, मुझे पता चला कि FM20.dll एक फाइल है जिसमें VBA को विंडोज़ रूपों के साथ काम करने की अनुमति है। यह प्यारा KB आलेख इसके उपयोग का वर्णन करता है, लेकिन जोर देता है कि FM20.dll "पुनर्वितरण योग्य नहीं है" (उन्हें उन सभी के लिए NOT कैप्स और बोल्ड बनाना था जो अस्पष्ट थे और शब्द के निचले-बोल्ड संस्करण के बारे में भ्रमित नहीं थे ' नहीं '), और यह केवल इसे वितरित करने के लिए होने वाले कई Microsoft अनुप्रयोगों में से एक को स्थापित करके प्राप्त किया जा सकता है।

यह उस शानदार योजना के साथ आने के लिए हजारों डॉलर के उच्च मूल्य के वकीलों की एक टीम ले गया होगा जो निश्चित रूप से किसी को एक DLL फ़ाइल की प्रतिलिपि बनाने और मैन्युअल रूप से इसे पंजीकृत करने से रोक देगा। उन्हीं समर इंटर्न कानूनी विद्वानों के प्रकोप से बचने के लिए, मैंने डीएलएल को किसी अन्य मशीन से कॉपी करके अपने नए सर्वर पर पंजीकृत नहीं किया। इसके बजाय, मैंने कभी-कभी-लोकप्रिय "Microsoft ActiveX नियंत्रण पैड" डाउनलोड करने के लिए उसी KB आलेख में लिंक का उपयोग किया, जो मेरे लिए बहुत प्रतिष्ठित FM20.dll स्थापित करता है।

(निश्चित रूप से, एमबीएस केबी लेख एमएस ऑफिस सीडी से FM20.dll फ़ाइल को कॉपी करने के लिए कहता है। नियमों की प्रशंसा करते हुए, क्या हम, एमबीएस हैं?)

और, उस के साथ, त्रुटि दूर हो गई और मैं अपने वीबीए प्रोजेक्ट में उपयोगकर्ता प्रपत्र और आयात फॉर्म फाइल डालने में सक्षम था।

एक नोट - यदि आप Windows Server 2008 x64 पर काम कर रहे हैं, तो C: \ Windows \ SysWOW64 निर्देशिका में 32-बिट फ़ाइल स्थापित है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.