Microsoft अभी भी .NET उत्पादों को सीधे एकीकृत करने के बजाय, VBA को Office उत्पादों के भीतर क्यों रखता है? [बन्द है]


12

मुझे पता है कि आपके VBA कोड से .NET कोड को कॉल करना संभव है, लेकिन VBA क्यों मौजूद है? एकमात्र कारण मैं सोच सकता हूं कि विरासत है।

मुझे बस एक छाँटना था Scripting.Dictionaryऔर आवश्यक कोड की मात्रा भयावह थी।

IDE Visual Studio 2003 की तरह दिखता है। और इसमें बहुत कम विवरण हैं, जो आपको पागल कर देते हैं (जैसे कि लाइन बदलना, और कुछ संकलन त्रुटि के कारण चेतावनी प्राप्त करना)। या, यदि आप एक से अधिक स्प्रेडशीट खोलते हैं, तो यह आपको "VBAProject" में मिलाता है और यह वास्तव में भ्रमित करने वाला है।

पूरा मॉड्यूल / क्लासमॉडल / फॉर्म डिवीजन वास्तव में उतना बुरा नहीं है, लेकिन मैं हर तरह से सीधे रूपों में तर्क लिखने के साथ, या एक बड़ा मॉड्यूल रखता हूं जो सब कुछ संभालता है।

मैं Alt + F11 क्यों नहीं दबा सकता, और C # में हैक कर सकता हूं?


11
"एकमात्र कारण मैं इस बारे में सोच सकता हूं कि विरासत है।" और यह आपके लिए पर्याप्त नहीं है?
व्यंग्य

3
Microsoft विरासत अनुप्रयोगों और पश्चगामी संगतता का राजा है ... किसी भी अन्य उत्तर से मुझे आश्चर्य होगा कि यह वह Microsoft है जिसके बारे में हम बात कर रहे हैं।

2
@Kiril यह सबसे अधिक संभावना नहीं है "हमने हमेशा इसे इस तरह से किया"; यह शायद "हमने तुलना की है कि हम पीछे की संगतता को तोड़ने से कितना लाभ उठाते हैं। हम कितना खो देंगे, और पाया कि यह इसके लायक नहीं है।"
डोभाल

1
@Kiril - आप सवाल VBA के बजाय ".NET" के साथ ऑफिस शिप करने के लिए कहते हैं। इसे छोड़ने की आवश्यकता होगी।
जेएफओ

3
@ किरील: बहुत सारे डोडी पात्र भी दस्तावेज़ों में डीएल एम्बेड करने में बहुत खुश होंगे, लेकिन आपके लाभ के लिए नहीं।
whatsisname

जवाबों:


15

Microsoft Office के पास डिफ़ॉल्ट रूप से प्रोग्राम को बदलने / बढ़ाने के लिए कई तरीके हैं। VBA डॉक स्क्रिप्टिंग के लिए एक परीक्षण की गई, प्रमाणित और व्यापक रूप से फैली हुई भाषा है। बहुत सारे कार्यालय के लोग VBA को जानते हैं और इसका उपयोग करते हैं, जबकि वे C # जैसी अधिक जटिल प्रोग्रामिंग भाषाओं को नहीं जानते हैं। यदि ग्राहकों को पुराने मैक्रो सक्षम दस्तावेजों के भार को फिर से लिखना होगा तो कार्यालय को बेचा नहीं जाएगा, जो कि व्यवसायिक महत्वपूर्ण चीजों को करता है - वे एक नई भाषा या जो कुछ भी सीखते हैं। बैकवर्ड कम्पैटिबिलिटी एक प्रमुख विशेषता है!

Office संभावना के लिए एक पूर्ण .NET स्टैक पर निर्भरता प्रबंधन (dll: s, आदि) के कुछ सेट की आवश्यकता होती है और आसानी से सरल कार्यों के लिए प्रबंधन करने के लिए भारी हो जाएगा - यह हल्के स्क्रिप्टिंग के लिए शायद ही कोई विकल्प है। VSTO आपको C # के साथ जाने की सुविधा देता है, लेकिन एक भारी प्लगइन विकास चक्र की कीमत पर।

Microsoft के एक प्रोग्राम मैनेजर ने इसके बारे में यहाँ लिखा है । यह स्पष्ट है कि VBA छोटे स्क्रिप्टिंग उद्देश्यों के लिए अभी भी आसपास है और रहेगा।


लेख में व्याख्या बहुत अच्छी है। धन्यवाद।
किरिल

6
एक पूर्व-कर्मचारी के रूप में, मैं यह जोड़ सकता हूं कि कुछ ग्राहक स्पीड-डायल के साथ-साथ नियमित चैट पर गेट्स / बल्मर / नडेला आदि के लिए बड़े पैसे का भुगतान करते हैं और वीबीए को महत्वपूर्ण माना जाता है कि कोई भी बदलाव जो वीबीए व्यवहार को तोड़ता है (विशेषकर एक्सेल में) और यहां तक ​​कि संस्करणों के बीच भी) जल्दी से ध्यान प्राप्त करें। इसके अलावा यह केवल अकुशल के लिए किसी भी तरह से नहीं है; इसका उपयोग करने वाले पेशेवर डेवलपर्स की एक सेना है। कार्य ज्ञान के रूप में V # को VBA के साथ काफी खोजा जाता है।
जेम्स स्नेल

इस तर्क ने एमएस को वीबी 6 साल पहले वीबीनेट के पक्ष में रोकने से नहीं रोका, जिसने बहुत सारे कोड तोड़े।
मिकी लोवी

3

खैर, जवाब सख्ती से "विरासत" नहीं है। इसका उत्तर यह है कि VBA न तो VB6 या VB.Net है: यह VBA है। एक अलग, लेकिन संबंधित भाषा। यदि VBA को VB.Net से बदल दिया जाए तो यह अनिवार्य रूप से बहुत सारे दस्तावेज़ तोड़ देगा।

VB.Net के साथ VBA को बदलना निश्चित रूप से उनके मुख्य उत्पादों के उपयोगकर्ताओं की एक महत्वपूर्ण संख्या के लिए डेटा हानि का परिणाम होगा - अच्छी बात नहीं है।

और VBA के लिए उनका लक्ष्य बाजार प्रोग्रामर नहीं है।


7
VBA VB6 का बहुत करीबी चचेरा भाई है। केवल भौतिक भिन्नताएं एपीआई के साथ क्या करने वाली हैं; एक्सेल या वर्ड ऑब्जेक्ट मॉडल के बजाय VBForms। उन मतभेदों को अनुपस्थित करें, आप VBA6 (या इसके विपरीत) में VBA कोड कॉपी / पेस्ट कर सकते हैं, और यह अभी भी 99 प्रतिशत समय काम करेगा।
रॉबर्ट हार्वे

3
VBA और VB.Net/C# के लिए समर्थन परस्पर अनन्य नहीं होना चाहिए।
जोएल कोएहॉर्न

2

यदि आप मुख्य कारण पर विचार करते हैं कि लोग खरीदते हैं, तो कार्यालय सभी मौजूदा दस्तावेजों के साथ संगतता बनाए रखना है, जिनमें से कई में मैक्रोज़ और VBA हैं, यह उन उपयोगकर्ताओं का इलाज करने के लिए एक बहुत ही बहादुर Microsoft होगा जैसे उन्होंने VB6 भीड़ किया था और उन्हें बताएं इसे चूसना और .NET में कोडिंग शुरू करें, बस # 1 uservoice अनुरोध पर एक नज़र डालें !

मुझे लगता है कि LibreOffice लोग खुद को बेहोशी में खुश हो जाएँगे!

VBA कार्यालय में उत्पादकता के लिए है, न कि "प्रोग्रामिंग" के लिए। जिस दिन आपको अपने दस्तावेज़ों से अधिक शक्ति की आवश्यकता होती है वह दिन होता है जब आप एक प्रोग्रामर को सब कुछ फिर से लिखने के लिए किराए पर लेते हैं। मुझे लगता है एक और कारण है कि विज़ुअल स्टूडियो मैक्रोज़ .NET या तो नहीं हैं - devenv4 COM ऑब्जेक्ट के बारे में सोचें जो VBA से अधिक भिन्न नहीं हैं।


वह उन्हें वीबीए खाई करने के लिए नहीं कह रहा है। वह उन्हें एक अतिरिक्त विकल्प के रूप में .Net करने के लिए कह रहा है।
जोएल कोएहॉर्न

1

मुझे लगता है कि विरासत और लोकप्रियता के बीच मामूली, लेकिन महत्वपूर्ण अंतर है । और जब आपने मेरे जितने अनुबंध किए हैं, तो आप सीखते हैं कि VBA बहुत लोकप्रिय है :) मैं आपको यह नहीं बता सकता कि मैंने "एक्सेल जॉकी" के लिए कितने अनुबंध किए हैं जो प्रोग्रामिंग के बारे में नहीं जानते हैं लेकिन VBA को कुचल सकता है जैसे कि यह जीवन या मृत्यु का मामला है।

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