2008-10-13 15 views
7

में उपयोग के लिए एक्सेल 2007 में वीबीए लिखना जहां मैं डेवलपर्स में हूं, को Excel 2007 में अपडेट किया गया है, लेकिन अधिकांश उपयोगकर्ताओं ने नहीं किया है। मैं एक ऐसे उपयोगकर्ता के लिए एक स्प्रेडशीट टेम्पलेट (* .xlt) का निर्माण कर रहा हूं जिसमें कुछ वीबीए कोड शामिल हैं, और मैं सोच रहा हूं कि 2003 में 2007 में इसे बनाने में मुझे कौन से मुद्दे चलाने की संभावना है? मेरे पास परीक्षण के लिए Excel 2003 के साथ एक मशीन तक पहुंच नहीं है, और मुझे चिंता है कि यह विशेष परियोजना आपदा के लिए आगे बढ़ रही है।एक्सेल 2003 में Excel 2003

+0

मैंने अपने बॉस को एक स्प्रेडशीट के बजाय एएसपी.Net पृष्ठ में बनाने के लिए आश्वस्त किया है (यह हमारे बाकी इंट्रानेट ऐप्स के साथ इस तरह से अच्छा प्रदर्शन करेगा), इसलिए यह सवाल अब मेरे दृष्टिकोण से निकल गया है। हालांकि, यहां जानकारी किसी और के लिए उपयोगी हो सकती है, इसलिए मैं इसे सक्रिय कर रहा हूं। –

+0

वास्तव में यह सवाल काफी रोचक है लेकिन दुर्भाग्य से अंतहीन उपयोग केस परिदृश्यों के कारण हम शायद इसे कभी पूरा नहीं करेंगे। वास्तव में विकास और परीक्षण के लिए Office 2003 के साथ VM का उपयोग न करने का कोई बहाना नहीं है। –

उत्तर

8

वीबीए भाषा नहीं बदली है, लेकिन Office 2007 में अतिरिक्त ऑब्जेक्ट्स हैं जो Office 2003 में नहीं हैं। स्वाभाविक रूप से, यह 2003 के वातावरण में इन आइटम्स तक पहुंचने का प्रयास करते समय रनटाइम त्रुटि का कारण बन जाएगा। एक्सेल 2003 के साथ विकसित करने के लिए वर्चुअल मशीन के बारे में सेटिंग करने से आपको क्या रोक रहा है?

+1

मुझे यहां कोई वर्चुअल मशीन काम करने की सुविधा नहीं है। यदि आप मुझे अतिरिक्त वस्तुओं की सूची में इंगित कर सकते हैं तो मैं उनसे बचने के लिए जान सकता हूं, यह अच्छा होगा। –

2

बिलब 2112 सही है। एक्सेल 2003 में Excel 2007 में कई बदलाव हैं जो पिछड़े संगत नहीं हैं। हालांकि भाषा बदल नहीं सकती है, वस्तुओं को अद्यतन किया गया है। कुछ में अतिरिक्त गुण जोड़े गए हैं, कुछ अलग-अलग काम करते हैं और एक्सेल में कुछ फ़ंक्शन बदल गए हैं।

आपको बहुत सावधान रहना होगा कि आप Excel 2003 में कौन सी कोड काम करते हैं। मैं सुझाव दूंगा कि बिलब 2112 ने कहा था कि आपको न केवल परीक्षण करने के लिए वर्चुअल मशीन मिलती है बल्कि कोड भी शामिल है। मैं अपने सभी एक्सेल विकास के लिए करता हूं जिन ग्राहकों के पास 2003 में 2003 की मशीन है। ध्यान दें कि यदि उपयोगकर्ताओं के पास Excel 2002 या 2000 है तो आप वापस जाने के साथ और भी अंतर कर सकते हैं और आपको किसी भी कोड पर रनटाइम त्रुटियां मिलेंगी जो इन पुराने संस्करणों का समर्थन नहीं करती हैं।

अद्यतन दुर्भाग्यवश जेफ़्स उत्तर काफी सही नहीं है। जबकि हाँ वीबीए भाषा को अद्यतन नहीं किया गया है, यह 2007 में 2003 में समान नहीं है। 2003 में यह 2002 के समान नहीं था। क्या हुआ है अतिरिक्त और अतिरिक्त कार्यों और कार्यों के लिए तर्क जोड़े गए हैं। उदाहरण के लिए 2002 में 2003 में एक्सेल में FIND फ़ंक्शन में और विकल्प हैं। इस प्रकार यदि आप 2003 में मैक्रो (इन समस्याओं को ढूंढने का सबसे अच्छा तरीका) रिकॉर्ड करते हैं और फिर 2002 में इसे चलाते हैं तो आपके पास रन टाइम त्रुटियां होंगी नए तर्क जो कि 2002 के वीबीए संपादक में काम नहीं करते हैं। एक्सेल 2007 में परिवर्तित किए गए कार्यों के लिए एक ही प्रक्रिया के बाद और फिर परीक्षण करने के लिए 2003 में वापस जाने से आपको इन समस्याओं का पता लगाने में मदद मिलेगी। कुछ उदाहरणों में सशर्त स्वरूपण, रंग (थीम) और कई नए स्प्रेडशीट फ़ंक्शन शामिल हैं। जोन पिल्टियर के पास उस संबंध से सबसे अच्छी सलाह है - क्लाइंट/उपयोगकर्ता का उपयोग करने वाले सबसे पुराने संभव संस्करण में विकसित होना चाहिए। वर्चुअल पीसी 2007 डाउनलोड और इंस्टॉल करने के लिए स्वतंत्र है। आपको बस चलाने के लिए इंस्टॉल करने के लिए XP/Vista और Office की लाइसेंस प्राप्त प्रति की आवश्यकता होगी।

+0

दुर्भाग्य से वर्चुअल मशीन एक विकल्प नहीं है। मुझे वास्तव में 2003 में कौन सी चीजें उपलब्ध नहीं हैं, इसकी एक सूची की आवश्यकता है। –

5

एक्सेल 2007 की ऑब्जेक्ट लाइब्रेरी में जोड़े गए ऑब्जेक्ट्स और विधियों की शायद अपूर्ण सूची के आधार पर, सबसे अच्छा (सबसे विश्वसनीय) अभ्यास हमेशा Excel के सबसे पुराने संस्करण में विकसित होने के लिए उपयोग किया जा सकता है कोड।

+0

दुर्भाग्य से, मेरे पास वह विकल्प नहीं है। –

+0

यह सबसे अच्छा जवाब है, क्योंकि यह सही ढंग से इंगित करता है कि कोई भी सूची शायद कम से कम आंशिक रूप से अपूर्ण होगी, और वीएम उत्तर के साथ अच्छी तरह से संबंध रखेगी। –

-3

मैं 2003 के तहत बहुत सारे मैक्रोज़ विकसित करता था, क्या पोटा, ढूँढें, डिर और कुछ अन्य जैसी चीजें उपलब्ध नहीं हैं या कुछ बदलती हैं। इसलिए कुछ त्रुटियों की उम्मीद की जा सकती है, मैं पंक्तियों को काम करने के लिए पंक्तियों की गणना करने के लिए 65000 पंक्ति से पहले गैर खाली पंक्ति तक गिनती करता था .... अब और पंक्तियों का मतलब है

+0

वास्तव में नहीं, केवल उस संपत्ति का उपयोग करें जो इसके लिए है, इसलिए आपको अंतिम पंक्ति के "अंत" पर गिनने की आवश्यकता नहीं है। –

4

एक अंतर मुझे पता चला कि एक अंतर रिबन (एक्सेल 2007 में) से कॉल किए जाने से उपरोक्त में मेनू (एक्सेल 2003 में) से कॉल करने के लिए एक अलग हस्ताक्षर होना चाहिए। व्हाटमोर, एक्सेल 2003 आईरिबोनकंट्रोल को पहचान नहीं पाता है और संकलन त्रुटियों को फेंकता है।

क्रॉस-वर्जन संगतता की ओर काम करने के लिए, मैं एक सशर्त संकलन तर्क का उपयोग करता हूं और फिर इसे प्री-प्रोसेसर मैक्रोज़ में जांचता हूं।

उदा

#If USINGRIBBON Then 
    Public Sub CallFromRibbon(control As IRibbonControl) 
#Else 
    Public Sub CallFromRibbon() 
#End If 
    ' Code here 
    End Sub 

इसका मतलब यह है कि आप USINGRIBBON झंडा झूठी (Excel2003 के लिए) के लिए सेट और एक अन्य USINGRIBBON ध्वज के साथ (Excel2007 के लिए) सही पर सेट के साथ अपने ऐड-इन का एक संस्करण को बचाने के लिए है, लेकिन यह है कि दो पूरी तरह से अलग कोडबेस बनाए रखने से कहीं ज्यादा आसान है।

संबंधित मुद्दे