आप एक्सेल के किस संस्करण का उपयोग करने के लिए प्रोग्रामेटिक रूप से कमांड नहीं कर सकते हैं। पीआईए केवल उन्हीं इंटरफेस, या ऑब्जेक्ट मॉडल को निर्देशित करते हैं, जिनके खिलाफ आप विकास कर रहे हैं। लेकिन एक्सेल का कौन सा संस्करण वास्तव में चल रहा है रजिस्ट्री द्वारा नियंत्रित किया जाता है।
यह पीआईए चल की बात आती है, हालांकि, आप वास्तव में उच्चतम स्तर के पिया सिस्टम पर स्थापित के खिलाफ चलेगा। तो यदि आप एक्सेल 2003 पीआईए के खिलाफ विकसित होते हैं, लेकिन क्लाइंट में एक्सेल 2007 पीआईए के साथ एक्सेल 2007 है, तो आपका कोड एक्सेल 2007 पीआईए के खिलाफ चलाएगा - और इसे ठीक चलाना चाहिए, क्योंकि एक्सेल 2007 पीआईए पिछड़ा संगत है। यही है, प्रत्येक उच्च संख्या वाले पीआईए संस्करण (और एक्सेल ऑब्जेक्ट मॉडल) पुराने पीआईए और पुराने एक्सेल ऑब्जेक्ट मॉडल के खिलाफ संकलित आदेशों के लिए पिछड़ा संगत है। ध्यान दें कि यदि क्लाइंट में मशीन पर एक्सेल 2007 और एक्सेल 2003 पीआईए दोनों थे, तो एक्सेल के कौन से संस्करण चल रहे हैं, इस पर ध्यान दिए बिना उच्च संस्करण वाला पीआईए लोड होगा - इसलिए एक्सेल 2007 पीआईए चलाएगा, यदि दोनों पीआईए उपलब्ध थे।
[संपादित करें: एक चेतावनी यह है कि एक्सेल 2007 पीआईए VB.NET या C# 4.0 का उपयोग करते समय 100% पिछड़ा संगत होना चाहिए। यदि सी # 3.0 या उससे नीचे का उपयोग करते हैं, तो तथ्य यह है कि वैकल्पिक पैरामीटर वास्तव में आवश्यक हैं जब सी # 3.0 या उससे नीचे बुलाए जाने पर उच्च-संस्करण पीआईए या ऑब्जेक्ट मॉडल के खिलाफ चलते समय कुछ कोड में ब्रेक बन जाएगा। यह अपेक्षाकृत दुर्लभ है, और सी # 4.0 के साथ, इस मुद्दे को सिद्धांत में दूर जाना चाहिए।]
ठीक है, इसलिए आपके पास पीआईए पर बहुत अधिक नियंत्रण नहीं है क्योंकि आपके द्वारा विकसित पीआईए वास्तव में नहीं है नियंत्रण जो पीआईए वास्तव में क्लाइंट मशीन पर चल रहा है।
आपके पास एक्सेल के कौन से संस्करण को लॉन्च किया गया है, इस पर बहुत अधिक नियंत्रण नहीं है।उदाहरण के लिए, जब आप एक नया एक्सेल उदाहरण बनाते हैं:
Excel.Application excelApp = new Application();
लोड किया गया एक्सेल एप्लिकेशन रजिस्ट्री में वर्तमान संस्करण सेट के अनुसार सेट किया गया है। वर्तमान संस्करण को बचाया पर है:
HKEY_CLASSES_ROOT\Excel.Application\CurVer
यह Excel.Application.12 'के स्थान पर, अपने मामले' Excel.Application.11 'का डिफ़ॉल्ट मान होगा में' CurVer 'कुंजी की तरह दिखता है। इसे अकेले बदलना चाल हो सकता है, लेकिन मैं यह सुनिश्चित करने के लिए मरम्मत करना पसंद करूंगा कि सभी रजिस्ट्री सेटिंग्स ठीक से ठीक हो जाएं। (और मैं संभवतः यह जान सके कि नहीं क्या सभी सेटिंग्स होना चाहिए।) ठीक है, मैं सिर्फ पाया एक और एक: आप यह भी परिवर्तित करने की आवश्यकता होगी:
[HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\ProgID]
"Excel.Application.12" का मान धारण करने के लिए । लेकिन मैं दृढ़ता से मरम्मत की सिफारिश करने की सिफारिश करता हूं। मुझे नहीं पता कि अन्य सेटिंग्स को बदलने की आवश्यकता हो सकती है, इसलिए हाथ से उन्हें बदलना थोड़ा जोखिम भरा है।
इसके अलावा, आप के रूप में अच्छी निम्नलिखित कुंजी खोजना चाहिए:
HKEY_CLASSES_ROOT\Excel.Application.11
HKEY_CLASSES_ROOT\Excel.Application.12
क्योंकि इन Excel के संस्करण है कि आप स्थापित किया है कर रहे हैं।
(एक आगे की चर्चा के लिए here देखें।)
मैं बहुत यकीन है कि यह से कोई लेना देना क्रम जा रहा है 2007 को स्थापित किया गया है कर रहा हूँ -> 2003
हाँ, यह 100% सही है । आप एक्सेल 2007 पर मरम्मत चलाने का प्रयास कर सकते हैं, यह करना सबसे आसान काम होगा। यदि यह काम नहीं करता है, तो मैं दोनों को अनइंस्टॉल कर दूंगा और फिर उन्हें दोबारा इंस्टॉल कर दूंगा। मैं एक्सेल 2003 को अनइंस्टॉल कर दूंगा और फिर 2007 को अनइंस्टॉल करूँगा (जिस क्रम में आपने उन्हें इंस्टॉल किया था) को उलट दें और फिर एक्सेल 2003 स्थापित करें और फिर एक्सेल 2007 स्थापित करें ताकि आप दोनों संस्करणों को सही क्रम में इंस्टॉल कर रहे हों।
लेकिन ध्यान रखें कि ऐसा करके, जब आप Excel.Application excelApp = new Application()
पर कॉल करते हैं तो Excel 2007 डिफ़ॉल्ट रूप से चलाया जाएगा।
वास्तविक सिफारिश अभ्यास नहीं डेवलपर की मशीन पर चल एक्सेल के दोनों संस्करणों है। इस बारे में अधिक के लिए देखें:
मैं अपने ही विकास मशीन पर एक्सेल के कई संस्करण किया करते थे, और मैं व्यक्तिगत रूप से महसूस किया है कि कमियां थे इन लेखों के रूप में जटिल नहीं है यह ध्वनि बनाते हैं। सामान्यतः, एक्सेल 2007 पीआईए एक्सेल 2003 पीआईए के लिए पिछड़ा-संगत है और सब कुछ ठीक काम करता है। लेकिन मैं एक बार आपके जैसा रजिस्ट्री गड़बड़ में आया और "सही काम करने" का फैसला किया। मैंने दोनों को अनइंस्टॉल किया और फिर केवल Excel 2007 को पुनः स्थापित किया।
वहां से मैंने वर्चुअल पीसी स्थापित किया, जो मुफ़्त है (वीएम वेयर वास्तव में थोड़ा बेहतर है, लेकिन यह मुफ़्त नहीं है) और फिर 2003 के लिए Excel के मेरे निचले संस्करण स्थापित किए , 2002, 2000, और '97 अलग-अलग वीएम पर। यह निश्चित रूप से स्थापित करने के लिए कुछ काम है, लेकिन एक बार ऐसा करने के बाद, सब कुछ 100% साफ है।
उस ने कहा, शायद मैं वास्तव में को वीएम पर एक्सेल के निचले संस्करणों के विरुद्ध विकसित नहीं करना चाहता, तो वीएम के भीतर होस्ट किए गए विजुअल स्टूडियो का उपयोग करना बहुत कठिन होगा। इसलिए ये वीएम केवल यह सुनिश्चित करने के लिए तैनाती परीक्षण के लिए अच्छा है कि आपका सिस्टम विभिन्न क्लाइंट कॉन्फ़िगरेशन के खिलाफ काम कर सके। सही बात?
आशा है कि इससे मदद मिलती है!
माइक
आप Excel 2007 की मरम्मत चल रहा है और देखते हैं कि अगर यह rectifies कोशिश कर सकता है? – x0n
यह संभव है, लेकिन मुझे डर है कि 2003 पीआईए को वेबसाइट कोड के लिए जैक कर देगा जब मुझे उस पर काम करना होगा। मुझे लगता है कि मैं आगे और आगे उछाल सकता हूं, लेकिन मैं इस बारे में चिंतित हूं कि यह हमारे आंतरिक उपयोगकर्ताओं की मशीनों पर एक बार कैसे स्थापित होगा। –
यह पीआईए नहीं बदलेगा। आप सुनिश्चित करने के लिए जीएसी की जांच कर सकते हैं, लेकिन यह 99.99% निश्चित है कि आपके पास पहले से ही आपकी मशीन पर एक्सेल 2003 और एक्सेल 2007 पीआईए दोनों हैं। तो मरम्मत करने के द्वारा पीआईए सेटअप नहीं बदलेगा। लेकिन एक सुधार को Excel 2003 के बजाय वर्तमान संस्करण Excel 2007 बनाने के लिए रजिस्ट्री को ठीक करना चाहिए। अधिक जानकारी के लिए नीचे मेरा उत्तर देखें। –