2010-03-22 21 views
12

का उपयोग कर एक्सेल को स्वचालित करने के पेशेवरों और विपक्ष को एक्सेल में एक वित्तीय नियोजन टूल बनाने के साथ काम किया गया है जो कुछ कस्टम फ़ंक्शंस/मैक्रोज़ से लाभान्वित होगा।वीबीए बनाम एक्सेल

मेरी प्रारंभिक प्रतिक्रिया वीबीए का उपयोग करना था। मैंने इसे पहले एक्सेल ड्राइव करने के लिए उपयोग किया है (5 साल पहले कहें)। लेकिन फिर मैंने आश्चर्यचकित होना शुरू किया कि क्या मैं वीएसटीओ का उपयोग बंद कर दूंगा।

क्या किसी के पास दोनों तकनीकों का उपयोग करने का अनुभव है और पेशेवरों और विपक्षों को सूचीबद्ध कर सकते हैं ताकि मैं मूल्यांकन कर सकूं कि कौन सा कोर्स सबसे अच्छा होगा।

+0

http://stackoverflow.com/questions/1348928/pros-and-cons-of-vb-vba –

उत्तर

6

मेरा सुझाव है कि आप अपने मानक के लिए VBA के साथ चिपके रहते हैं एक्सेल के साथ विकास, और इस तरफ .NET सीखें। .NET का उपयोग करना निश्चित रूप से अगला कदम है, लेकिन यह आपके एक्सेल विकास को अधिक कठिन बनाता है।

आगे, वीएसटीओ उपयोगकर्ता परिभाषित वर्कशीट फ़ंक्शंस ("यूडीएफ") बनाने में सक्षम नहीं है, इसलिए आपको वीबीए फ्रंट-एंड की आवश्यकता होगी, या ऐसा करने के लिए VSTO का उपयोग किए बिना प्रबंधित COM एड-इन बनाएं । तुलनात्मक रूप से, वीबीए आपको लगभग कोई प्रयास के साथ यूडीएफ बनाने की अनुमति देता है।

.NET का उपयोग करने से अधिक फायदे हैं, ज्यादातर मजबूत टाइपिंग, पूर्ण ओओपी क्षमताओं और बड़े आकार की परियोजनाओं को व्यवस्थित करने की क्षमता के संबंध में। लेकिन जब तैनाती की बात आती है तो वीबीए के पास .NET पर भारी फायदे हैं, जो नेट या वीएसटीओ से निपटने के दौरान एक्सेल के साथ काफी जटिल है। सीखने और शुरू करने के लिए वीबीए भी एक आसान भाषा है।

कुल मिलाकर, मैं सुझाव दूंगा कि आप अपने दैनिक विकास के लिए वीबीए का उपयोग करें, लेकिन पक्ष में वीबी.नेट या सी # सीखें ताकि आपके प्रोग्रामिंग कौशल एक्सेल क्षेत्र के बाहर बढ़ सकें। आखिरकार, आपका .NET कौशल इतना मजबूत हो सकता है ताकि आप इसे वीबीए पर इस्तेमाल करना पसंद कर सकें, लेकिन उस दिन के लिए आपको .NET पर बहुत अच्छा होना होगा।

(। इस पर एक और इसी तरह की राय के लिए, Do I lose the benefits of macro recording if I develop Excel apps in Visual Studio? देख)

संपादित करें: अद्यतन एंडी टिप्पणी के बारे में, नीचे: उपयोग में लाने की तरह

मुद्दे, डिबगिंग और UDFs वाले थे कि मैं तुलनात्मक जानकारी पर देख रहा था। सवाल मुझे लगता है कि उल्लेख किया जाना चाहिए था के लिए प्रतिक्रियाओं से आंकना मैं के साथ सी # 5 + वर्ष का अनुभव, मेरी VBA कौशल जबकि है (या उसके कमी) केवल बाहर 3 या 4 बार एक दशक

ठीक आ , हाँ, आपको कहना चाहिए था! इस तरह के प्रश्न वाले अधिकांश लोग वीबीए प्रोग्रामर हैं जो .NET में शामिल होने की तलाश में हैं। तो मैंने गलत समझा।

आपके मामले में, आपको सी # का उपयोग करना चाहिए, लेकिन मैं दृढ़ता से इसके लिए विजुअल स्टूडियो 2010 पर सी # 4.0 का उपयोग करने का सुझाव दूंगा, यह एक्सेल जैसे COM ऑब्जेक्ट मॉडल के विरुद्ध संचालन करते समय आवश्यक वाक्यविन्यास में काफी सुधार करेगा। वीएस 2010 वर्तमान में बीटा 2 में है और आरटीएम तिथि 12 अप्रैल के लिए निर्धारित है, इसलिए हम लगभग वहां हैं।

    :

    तैनाती के लिए के रूप में, अपने अनुभव के साथ मुझे नहीं लगता कि आप सेटअप संकुल या कार्यालय (VSTO) के लिए की तरह है और दृश्य स्टूडियो उपकरण के साथ बहुत ज्यादा मुसीबत होगा दो बातों के लिए excptionally अच्छा है

  1. ड्रैग और ड्रॉप डिज़ाइनर के माध्यम से अपने ऐड-इन के लिए एक कस्टम रिबन व्यवस्था बनाना। ड्रैग-एंड-ड्रॉप डिज़ाइनर के बिना आपको XML को इसके बजाय प्रदान करना होगा। एक्सएमएल ठीक है अगर आप मुझसे पूछें, लेकिन ड्रैग-एंड-ड्रॉप डिजाइनर वास्तव में

  2. वर्कशीट पर .NET नियंत्रणों का उपयोग करने का सपना है। मुझे नहीं पता कि यह आपके द्वारा किए जाने वाले योजना का हिस्सा है, लेकिन VSTO वर्कशीट पर .NET नियंत्रणों को उपयोग करने में सक्षम बनाता है। यह एक .NET प्रोग्रामर के लिए वास्तव में एक अच्छी क्षमता है क्योंकि ये नियंत्रण थोड़ा आसान दिख रहे हैं और विशेष रूप से .NET के साथ काम करने के लिए डिज़ाइन किए गए हैं।

दुर्भाग्य से, VSTO Excel 2003 के लिए और इसके बाद के संस्करण ही उपलब्ध है और मुझे लगता है कि आप Excel 2003 और Excel 2007 के लिए VSTO का उपयोग किए बिना बनाया प्रबंधित COM ऐड-इन्स, दूसरे हाथ पर अलग ऐड-इन्स बनाने के लिए , एक्सेल 2000 और ऊपर के लिए कोई कठिनाई के साथ संगत बनाया जा सकता है। अंत में, वीएसटीओ यूडीएफ के निर्माण का समर्थन नहीं करता है, इसलिए, आपको इसके लिए एक प्रबंधित ऑटोमेशन ऐड-इन बनाना होगा या वीबीए फ्रंट-एंड का उपयोग करना होगा जो आपके वीएसटीओ कार्यों को कॉल करता है।

कुल मिलाकर, मैं VSTO के साथ जाऊंगा यदि आप स्वयं को Excel 2007 और ऊपर तक सीमित कर सकते हैं। यदि आपकी आवश्यकताएं Excel 2003 और उसके बाद के लिए हैं तो मैं VSTO पर विचार करूंगा। और यदि आप Excel संस्करण 2000 और उसके बाद वाले संस्करणों पर चलाने में सक्षम होने की आवश्यकता है तो मैं एक प्रबंधित COM एड-इन के साथ जाऊंगा।

यूडीएफ समर्थन के लिए, मैं एक प्रबंधित स्वचालन ऐड-इन बनाउंगा, जो Excel 2002 और उसके बाद के संस्करण के लिए व्यवहार्य होगा। यदि आपको एक्सेल 2000 या उससे नीचे के यूडीएफ की आवश्यकता है तो आपको एक वीबीए फ्रंट एंड की आवश्यकता होगी जो आपके .NET असेंबली में COM-visible विधियों को कॉल करेगी।

ये मूल प्रो और कॉन हैं, जैसा कि मैंने इसे देखा है। अगर आपको और जानना है तो मुझे बताएं।

- माइक

+0

चीयर्स। तैनाती, डिबगिंग और यूडीएफ जैसे मुद्दे थे, जिन पर मैं तुलनात्मक जानकारी की तलाश में था। प्रश्न के जवाबों के आधार पर मुझे यह उल्लेख करना चाहिए था कि मेरे पास सी # के साथ 5+ वर्ष का अनुभव है, जबकि मेरे वीबीए कौशल (या इसकी कमी) केवल एक दशक में 3 या 4 बार बाहर आती है। – Andy

+0

ठीक है, गॉचा, मुझे एहसास नहीं हुआ कि आपके पास इतना सी # अनुभव था। मैंने अब ऊपर अपना जवाब अपडेट कर लिया है। –

+0

तैनाती के आसपास माइक के बिंदु को प्रतिबिंबित करने के लिए, आपको 2007 और 2010 के लिए अलग-अलग VSTO की आवश्यकता होगी - और संभवतः 2013. इसे VSTO के निर्माण के लिए कई परियोजनाओं की आवश्यकता है। यदि 2003 के लिए इमारत, मुझे विश्वास है कि आप बाकी के लिए .NET 2.0, और .NET 4 के साथ फंस गए हैं। –

2

मुझे नहीं लगता कि एक्सेल के भीतर वीबीए में कोडिंग के साथ स्वाभाविक रूप से गलत कुछ भी है। एक्सेल के प्रोसेस स्पेस में चलने का लाभ है और एक्सेल ऑब्जेक्ट मॉडल के साथ वीबीए इंटरैक्शन बहुत आसान है। हालांकि आप (और आपके उपयोगकर्ताओं) को एक्सेल ऐड-इन के रूप में वास्तव में अपने टूल के बारे में सोचने की आवश्यकता है।

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

(यदि आप सी # का उपयोग ध्यान दें और यदि आप विकल्प उपयोग VS2010 और सी # है 4 वहाँ स्वचालन संवर्द्धन कि उन्नयन के लायक हैं का एक समूह रहे हैं)

+0

एफवाईआई - आप शुद्ध वीबीए में ऐड-इन्स लिख सकते हैं और कोड/डेटा अलगाव प्राप्त कर सकते हैं जिसे आप ढूंढ रहे हैं। ऐसा लगता है जैसे आप कह रहे हैं कि आप शुद्ध वीबीए में ऐड-इन्स नहीं लिख सकते हैं, लेकिन मैं आपको गलत व्याख्या कर सकता हूं। – oob

+0

umm, मैंने जो कहा वह गलत व्याख्या नहीं किया। असल में मैं काफी स्पष्टता बताता हूं कि "एक्सेल ऐड-इन के रूप में वास्तव में आपके उपकरण के बारे में सोचने की आवश्यकता है" (वीबीए में कोडिंग करते समय) –

0

आप अपने नेट (WinForms, ASP.NET, आदि ...) के लिए COM इंटरॉप की कमियां के बिना अनुप्रयोगों (प्रदर्शन, उपयोग में आसानी) एक एक्सेल संगत स्प्रेडशीट घटक जोड़ने की सुविधा देता है ।

आप SpreadsheetGear विंडोज के बारे में अधिक सीख सकते हैं स्प्रेडशीट नियंत्रण here फॉर्म्स, लाइव ASP.NET नमूने here देख सकते हैं और नि: शुल्क परीक्षण here डाउनलोड अगर आप इसे अपने आप को कोशिश करना चाहते हैं।

अस्वीकरण: मैं खुद SpreadsheetGear LLC

4

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

अस्वीकरण: मैं तो मैं एक बात यह है कि अभी तक नहीं बनाया गया था बनाने के लिए कोशिश करता हूँ या तो ऐड एक्सप्रेस या एक्सेल डीएनए के साथ

0

कई महान जवाब यहां कोई संबंध नहीं है। मैं वीबीए के साथ रहना होगा। कई कारण हैं, लेकिन मेरे लिए मुख्य कारक होंगे:

  • क्लाइंट पक्ष को कोई निर्दिष्ट वर्ड रखने की आवश्यकता नहीं है। नेट की

स्थापित हालांकि, VBA जाहिर है, नहीं बहुत सुरक्षित है, इसलिए यदि आप कोड है कि आप छुपाना चाहते है, यह probobly नेट साथ जाने के लिए सबसे अच्छा है।