Visual Basic 6.0 और VBA के बीच अंतर


208

दोनों के बीच क्या अंतर है। मैंने हमेशा सोचा था कि VBA कुछ हद तक VB का 'अपंग' संस्करण है, लेकिन जब दूसरे दिन एक मित्र ने मुझसे पूछा कि मुझे नहीं पता कि वास्तविक अंतर क्या हैं।

इसके अलावा, जब आप उपयोग करते हैं, उदाहरण के लिए, एक्सेल, वह VB या VBA है?

जवाबों:


175

लगभग सभी प्रोग्रामिंग उद्देश्यों के लिए, VBA और VB 6.0 एक ही बात है।

VBA आपके प्रोग्राम को एक निष्पादन योग्य बाइनरी में संकलित नहीं कर सकता है। आपको अपनी परियोजना को शामिल करने और निष्पादित करने के लिए हमेशा मेजबान (एक वर्ड फ़ाइल और उदाहरण के लिए एमएस वर्ड) की आवश्यकता होगी। आप VBA के साथ COM DLL भी नहीं बना पाएंगे।

इसके अलावा, IDE में अंतर है - VB 6.0 IDE तुलना में अधिक शक्तिशाली है। दूसरी ओर, आपके पास VBA में होस्ट एप्लिकेशन का तंग एकीकरण है। अनुप्रयोग-वैश्विक ऑब्जेक्ट (जैसे "ActiveDocument") और ईवेंट घोषणा के बिना उपलब्ध हैं, इसलिए एप्लिकेशन-विशिष्ट प्रोग्रामिंग सीधे-आगे है।

फिर भी, कुछ भी नहीं है आप वर्ड फायरिंग से, VBA IDE लोड करना और एक समस्या को हल करना, जिसका वर्ड से कोई संबंध नहीं है। मुझे यकीन नहीं है कि अगर ऐसा कुछ है जो VB 6.0 (तकनीकी रूप से) कर सकता है, और VBA नहीं कर सकता। मैं MSDN पर एक तुलना पत्रक के लिए देख रहा हूँ, हालांकि।


7
ऐसा लगता है कि microsoft.com पृष्ठों पर कोई संक्षिप्त तुलना पृष्ठ नहीं है, या उन्होंने उन्हें अच्छी तरह छिपाया है। यह कहने के लिए पर्याप्त है कि VB 6.0 कोड VBA में अनलेडेड चलता है, जब तक कि आप COM ऑब्जेक्ट्स के संदर्भ नहीं बनाते हैं, जो VBA के साथ शिप नहीं किए जाते हैं, निश्चित रूप से।
तोमलक

7
VBA और Vb6 एक ही dll फ़ाइल का उपयोग करते हैं, यही वजह है कि कोड या तो चलता है। हालाँकि, VB6 में एक प्रिंटर ऑब्जेक्ट जैसा कुछ है जो VBA में नहीं है और मुझे नहीं पता कि वह क्यों है। अन्यथा, मेरा मानना ​​है कि आधार भाषाओं में कोई अंतर नहीं हैं।
डिक कुसलिका

46
यही कारण है कि मुझे लगता है कि यह जोड़ने के लायक है कि एक कार्यालय दस्तावेज़ खोलना एक निष्पादन को खोलने के समान लगभग जोखिम है।
ओरंग

13
VB में प्रिंटर संग्रह के अलावा क्लिपबोर्ड, स्क्रीन और ऐप ऑब्जेक्ट भी हैं। प्रपत्र पैकेज पूरी तरह से अलग हैं, क्योंकि आपको वीबी में विंडो नियंत्रण से बचने के लिए अपने रास्ते से बाहर जाना पड़ता है, लेकिन वीबीए में hWnd- उन्मुख एपीआई कॉल का उपयोग करना बहुत कठिन है क्योंकि अधिकांश नियंत्रण विंडो रहित हैं। और, नियंत्रणों की बात करें, तो आप VB में अपना स्वयं का लेखक कर सकते हैं और VBA के साथ-साथ अन्यत्र भी उनका उपयोग कर सकते हैं। अन्य बहुत सारे निगल्स - ऑब्जेक्ट ब्राउज़र (IDE में F2 दबाएं) देखें।
कार्ल ई। पीटरसन

3
ध्यान दें कि यह पुराना है। VBA को 64-बिट डेटा प्रकारों (LongLong, LongPtr) और अधिक परिवर्तनों के समर्थन के साथ VBA 7 में अपडेट किया गया है। VB 6 संस्करण पर अटका हुआ है, इसलिए यह इन नई सुविधाओं का समर्थन नहीं करता है। यह उत्तर अधिक परिवर्तनों पर चर्चा करता है। संक्षेप में, अब वे चीजें हैं जो VB नहीं कर सकती हैं, लेकिन VBA कर सकते हैं।
एरिक

47

VBA अनुप्रयोगों के लिए Visual Basic के लिए खड़ा है और इसलिए "VB के स्क्रिप्टिंग भाई" अनुप्रयोगों के लिए छोटा है। VBA एक्सेल में वास्तव में उपलब्ध है, लेकिन अन्य कार्यालय अनुप्रयोगों में भी।

वीबी के साथ, एक स्टैंड-अलोन विंडोज़ एप्लिकेशन बना सकता है, जो वीबीए के साथ संभव नहीं है।

हालांकि डेवलपर्स के लिए अपने स्वयं के अनुप्रयोगों में VBA को "एम्बेड" करना संभव है, उन अनुप्रयोगों को स्वचालित करने के लिए एक स्क्रिप्टिंग भाषा के रूप में।

संपादित करें : से VBA पूछे जाने वाले प्रश्न :

Q. अनुप्रयोगों के लिए विजुअल बेसिक क्या है?

ए। माइक्रोसॉफ्ट विजुअल बेसिक फॉर एप्लीकेशन (VBA) एक एम्बेड करने योग्य प्रोग्रामिंग वातावरण है जो डेवलपर्स को Microsoft Visual Basic की पूरी शक्ति का उपयोग करके कस्टम समाधान बनाने में सक्षम बनाता है। VBA की मेजबानी करने वाले अनुप्रयोगों का उपयोग करने वाले डेवलपर्स कस्टम व्यवसाय समाधानों के विकास चक्र को छोटा करते हुए, अनुप्रयोग कार्यक्षमता को स्वचालित और विस्तारित कर सकते हैं।

ध्यान दें कि VB.NET और भी दूसरी भाषा है, जो केवल VB के साथ सिंटैक्स साझा करती है।


9
दरअसल, Microsoft VB.Net को "विज़ुअल बेसिक" के रूप में संदर्भित करता है। Msdn.microsoft.com/en-us/vbasic/default.aspx देखें ।
DOK

19
हाँ। यह एक ऐसा तथ्य है जो मुझे Google के माध्यम से VB या VBA- विशिष्ट मदद के लिए हर बार अपने बालों को बाहर निकालना चाहता है। मूर्खतापूर्ण विपणन निर्णय।
तोमलक

8
@Tomalak: इसलिए मैं सिर्फ प्रसिद्घ कि ;-)
fretje

2
@ डॉक: हां, लेकिन यह इस तथ्य को नहीं बदलता है कि वीबी.नेट विजुअल बेसिक की तुलना में एक और भाषा है जिसे "वी डेवलपर्स" वीबी 6 या उससे पहले के रूप में जानते हैं।
fretje

4
@j_random_hacker इस मामले में, यह लगभग ऐसा लगता है कि MS VB.Net को VB का एक प्रकार मानता है, कम से कम दृश्य स्टूडियो vb पृष्ठ पर आधारित है - जो सटीक नहीं होगा। अजीब तरह से पर्याप्त है, यह विकि लेख एमएस विज़ुअल स्टूडियो पेज :) en.wikipedia.org/wiki/Visual_Basic_.NET की तुलना में इसके चेहरे पर अधिक जानकारी प्रदान करता है । हालाँकि, MSDN फ़ोरम प्रश्न अंतर पर कम से कम स्पर्श करने के लिए दिखता है: social.msdn.microsoft.com/Forums/en-US/Vsexpressvb/thread/…
JackOrangeLantern

41

यहाँ एक पुराने प्रश्न का अधिक तकनीकी और गहन उत्तर दिया गया है: Visual Basic for Applications (VBA) और Visual Basic (pre-.NET) केवल समान भाषा नहीं हैं, वे एक ही भाषा हैं। विशेष रूप से:

  • उनके पास एक ही विनिर्देश है : कार्यान्वयन-स्वतंत्र विवरण जिसमें भाषा शामिल है और इसका क्या अर्थ है। आप इसे यहाँ पढ़ सकते हैं: [MS-VBAL]: VBA भाषा विशिष्टता
  • उनके पास एक ही मंच है : वे दोनों Microsoft P-Code को संकलित करते हैं , जो ठीक उसी आभासी मशीन द्वारा निष्पादित होता है, जिसे dll msvbvm [x.0] .dll में कार्यान्वित किया जाता है।

पिछले साल आई एक पुरानी VB संदर्भ पुस्तक में , लेखक (पॉल लोमैक्स) ने यहां तक ​​कहा कि 'VBA' हमेशा से ही भाषा का नाम रहा है, चाहे वह स्टैंड-अलोन अनुप्रयोगों में या एम्बेडेड संदर्भों में उपयोग की गई हो (जैसे कि MS Office) ):

"इससे पहले कि हम आगे बढ़ते हैं, चलो बस मूल बिंदु पर स्पष्ट करते हैं। विज़ुअल बेसिक फॉर एप्लिकेशन (वीबीए) विजुअल बेसिक (वीबी) में प्रोग्राम करने के लिए इस्तेमाल की जाने वाली भाषा है। वीबी खुद एक विकास वातावरण है; उस वातावरण का भाषा तत्व वीबीए है। "

मामूली अंतर

होस्टेड बनाम स्टैंड-अलोन : व्यावहारिक रूप में, जब लोग "वीबीए" कहते हैं, तो वे विशेष रूप से "एमएस ऑफिस में उपयोग किए जाने वाले वीबीए" का अर्थ करते हैं, और वे "वीबी 6" का मतलब "वीबीए" स्टैंडअलोन डीबीए के अंतिम संस्करण में करते हैं। संकलक (यानी विज़ुअल स्टूडियो 6) "। MS Office के साथ बंडल किया गया IDE और कंपाइलर लगभग Visual Studio 6 के समान है, इस सीमा के साथ कि यह संकलन को अकेले dll या exe फ़ाइलों की अनुमति नहीं देता है। यह बदले में इसका मतलब है कि एम्बेडेड VBA परियोजनाओं में परिभाषित वर्ग गैर-एम्बेडेड COM उपभोक्ताओं से सुलभ नहीं हैं, क्योंकि वे पंजीकृत नहीं हो सकते हैं।

निरंतर विकास : Microsoft ने Visual Studio 6 के साथ एक स्टैंड-अलोन VBA कंपाइलर का उत्पादन बंद कर दिया, क्योंकि उन्होंने पसंद के प्लेटफॉर्म के रूप में .NET रनटाइम पर स्विच किया। हालाँकि, MS Office की टीम VBA को बनाए रखना जारी रखती है, और यहाँ तक कि एक नया VM (VBA7) भी नए VM (जिसे अभी VBA7.dll कहा जाता है) के साथ MS Office 2010 से शुरू किया गया है। केवल प्रमुख अंतर यह है कि VBA7 में दोनों एक 32- हैं और 64-बिट संस्करण और दोनों के बीच के अंतर को संभालने के लिए कुछ संवर्द्धन हैं, विशेष रूप से बाहरी एपीआई इनवोकेशन के संबंध में।


2
मुझे याद है कि लोमैक्स की किताब में वही उद्धरण है, लेकिन इस मंच पर इसके विपरीत, विकिपीडिया आदि पर अन्य सभी कथन दिए गए हैं, यह मुझे आश्चर्यचकित करता है कि कौन सही है, और क्यों असहमति है! लोमैक्स ने भी लिखा (पृष्ठ 3), "VBA एक ही भाषा है कि क्या आप इसका उपयोग VB अनुप्रयोग बनाने या Word या Excel में कुछ कार्य को स्वचालित करने के लिए कर रहे हैं।" इसके अलावा, "VBA एक होस्ट की गई भाषा है और विकास उपकरण के VB परिवार का हिस्सा है।"
ईजे माक

1
यदि आप VB6 में मदद चुनते हैं तो आप VBA भाषा के संदर्भ में जाते हैं। VB6, वर्ड की तरह, VBA भाषा को होस्ट करता है। जैसे अनुप्रयोग ऑब्जेक्ट वैश्विक ऑब्जेक्ट (स्वचालन मानक) हैं। VB6 स्टैंडअलोन कार्यक्रमों के लिए उपयुक्त एक ऐप ऑब्जेक्ट प्रदान करता है। वर्ड मैक्रो के लिए वर्ड एक ऐप ऑब्जेक्ट प्रदान करता है। ध्यान दें कि भाषा समान है, गायब होने वाली चीजों का कोई भी संदर्भ VB6 प्रिंटर ऑब्जेक्ट जैसी होस्ट की गई ऑब्जेक्ट को होस्ट करने के लिए है - यह भाषा का नहीं बल्कि होस्ट का हिस्सा है।
ACATInLove

15

क्या आप VB-Classic (VB6 ..) या VB.NET के साथ VBA की तुलना करना चाहते हैं?

VBA (Visual Basic for Applications) Microsoft Office अनुप्रयोगों में एम्बेडेड vb- क्लासिक-आधारित स्क्रिप्ट भाषा है। मुझे लगता है कि यह भाषा की विशेषताएं VB5 के समान हैं (यह सिर्फ कुछ अंतर्निहित कार्यों का अभाव है), लेकिन:

आपके पास उस कार्यालय दस्तावेज़ तक पहुंच है, जिसके लिए आपने VBA-script लिखा है और इसलिए आप उदा

  • मैक्रोज़ लिखें (अपने कार्यालय-कार्य में थोड़ा आवर्ती कार्यों के लिए स्वचालित दिनचर्या)
  • एक्सेल-सेल-सूत्र के लिए नए कार्यों को परिभाषित करें
  • प्रक्रिया कार्यालय डेटा

उदाहरण: एक्सेल-सेल का मान सेट करें

ActiveSheet.Cells("A1").Value = "Foo"

VBC और .NET कोई स्क्रिप्ट भाषा नहीं हैं। आप उन्हें अलग-अलग आईडीई के साथ स्टैंडअलोन-एप्लिकेशन लिखने के लिए उपयोग करते हैं, जो आप VBA (VBA- स्क्रिप्ट सिर्फ ऑफिस में "मौजूद" के साथ नहीं कर सकते हैं)

VBA का VB.NET से कोई लेना-देना नहीं है (उनके पास एक समान सिंटैक्स है)।


11

वास्तव में VBA का उपयोग DLL को संकलित करने के लिए किया जा सकता है। Office 2000 और Office XP डेवलपर संस्करणों में एक VBA संपादक शामिल होता है, जिसका उपयोग COM एडिंस के रूप में उपयोग के लिए DLL बनाने के लिए किया जा सकता है।

इस कार्यक्षमता को बाद के संस्करणों (2003 और 2007) में VSTO (ऑफिस के लिए वीएस टूल) सॉफ्टवेयर के आगमन के साथ हटा दिया गया था, हालांकि जाहिर है कि आप अभी भी वीएसओ (या VS.Net) के उपयोग के बिना इसी तरह से COM एडिन बना सकते हैं। VB6 IDE का उपयोग करना।


10
यह कार्यक्षमता नहीं निकाली गई थी। Microsoft ने बाद के संस्करणों का समर्थन करने के लिए "Office XP डेवलपर" को अपडेट नहीं किया। आप अभी भी डेवलपर इंस्टॉल कर सकते हैं और यह समस्याओं के बिना काम करता है। यह सिर्फ Microsoft द्वारा समर्थित नहीं है। ऐसा इसलिए है क्योंकि VBA कि 2003/2007 के जहाज अभी भी XP / 2002 के समान VBA संस्करण है।
AMissico

6

यह VBA है। VBA का अर्थ है Visual Basic for Applications , और इसका उपयोग Office दस्तावेज़ों पर मैक्रोज़ के लिए किया जाता है। इसमें VB.NET सुविधाओं तक पहुंच नहीं है, इसलिए यह VB6 के संशोधित संस्करण की तरह है, ऐड-ऑन के साथ दस्तावेज़ पर काम करने में सक्षम होने के लिए (जैसे एक्सेल के लिए VBA में वर्कशीट)।


7
नहीं, VBA VB5 / 6 का संशोधित संस्करण नहीं है - बल्कि, यह एक सबसेट है। VB5 / 6 IDE में ऑब्जेक्ट ब्राउज़र पर एक नज़र डालें, और आप उपयोग करने और दुरुपयोग करने के लिए संपूर्ण VBA ऑब्जेक्ट लाइब्रेरी देखेंगे। उस ने कहा, VBA करता है (आम तौर पर, हालांकि जरूरी नहीं) अतिरिक्त ऑब्जेक्ट पुस्तकालय होते हैं जो डिफ़ॉल्ट रूप से लोड होते हैं, और डिफ़ॉल्ट रूप से वैश्विक ऑब्जेक्ट प्रदान करते हैं, जो मेजबान पर्यावरण डु पत्रिकाओं से संबंधित होते हैं।
कार्ल ई। पीटरसन

5

VB एक भाषा नहीं है । VB एक प्रोग्राम है जो VBA को होस्ट करता है, जैसे ऑफिस होस्ट VBA को होस्ट करता है। VB ऐप ऑब्जेक्ट्स का एक सेट है, जैसे वर्ड और एक्सेल में है, और ऑफिस की तरह ही एक फॉर्म पैकेज है।

तो आप केवल VB में VBA कोड लिख सकते हैं।

PS यह जानकारी VB के लिए VB प्रश्न पृष्ठ पर INFO टैब पर है ।

VBA जानकारी से

VBA 6, को 1998 में शिप किया गया था और इनमें लाइसेंस प्राप्त मेजबानों का एक समूह शामिल है: उनमें से Office 2000 - 2010, ऑटोकैड, PI प्रोसेसबुक और स्टैंड-अलोन विज़ुअल बेसिक 6.0


3
यह उत्तर स्पष्ट है। VBA VB6 नहीं है, वे अलग-अलग इकाइयाँ हैं जो कई सुविधाएँ साझा करती हैं। वह छोटा उद्धरण कुछ साबित नहीं करता है। यह कहना कि यह भाषा नहीं है क्योंकि यह एक मेज़बान पर चलती है जो जावास्क्रिप्ट जैसी भाषाओं की भी गैर-भाषाओं में निंदा करती है, जो कि स्पष्ट नहीं है। इसके अलावा, वीबी 6 कार्यक्रमों को स्टैंड-अलोन कार्यक्रमों में संकलित किया जा सकता है, जिससे उन्हें किसी भी होस्ट (विंडोज के अलावा,) की आवश्यकता नहीं होती है।
एरिक

@ErikA नहीं आपको गलत समझा है कि वे क्या कह रहे हैं। VB के रूप में VB, होस्ट एप्लिकेशन है जो VBA चलाता है, जैसे कार्यालय अनुप्रयोग करते हैं। VB6 सिर्फ एक एप्लिकेशन होता है जो आपको स्टैंड-अलोन बनाने के लिए बायनेरिज़ जारी करने की अनुमति देता है। ऊपर अन्य उत्तर हैं जो विवरण को समझाते हैं।
टाइपडाइफ माइल्स_विलियम्स मेलो

4

VBA अनुप्रयोगों के लिए Visual Basic के लिए है और इसका एक Visual Basic कार्यान्वयन कार्यालय सूट में उपयोग किए जाने का इरादा रखता है।

उनके बीच अंतर यह है कि वीबीए कार्यालय दस्तावेजों (इसकी एक कार्यालय सुविधा) के अंदर एम्बेडेड है। VB अनुप्रयोगों के विकास के लिए विचारधारा / भाषा है।


1

वीबी (केवल 6.0 तक विजुअल बेसिक) वीबीए (अनुप्रयोगों के लिए विजुअल बेसिक) का सुपरसेट है। मुझे पता है कि अन्य लोगों ने इसे खारिज कर दिया है, लेकिन मेरी समझ यह है कि वीबीए का शब्दार्थ (यानी शब्दावली) VB6 (कार्यालय उत्पादों के लिए विशिष्ट वस्तुओं को छोड़कर) में शामिल है, इसलिए, VBA VB6 का सबसेट है। वाक्यविन्यास (अर्थात वह क्रम जिसमें शब्द लिखे गए हैं) VBA में बिल्कुल वैसा ही है जैसा कि VB6 में होगा, लेकिन अंतर यह है कि VBA या VB6 के लिए उपलब्ध वस्तुएं भिन्न हैं क्योंकि उनके अलग-अलग उद्देश्य हैं। विशेष रूप से VBA का उद्देश्य प्रोग्राम को MS Office में किया जा सकता है, जबकि VB6 का उद्देश्य मानक EXE, ActiveX नियंत्रण, ActiveX DLL और ActiveX EXE बनाना है जो या तो MS Office या Windows जैसे अन्य कार्यक्रमों में काम कर सकते हैं।


VB6 VBA भाषा को होस्ट करता है। यह समान है। VB6, होस्ट के रूप में, कुछ खास चीजें प्रदान करता है जैसे वर्ड इसकी होस्टिंग के दौरान करता है।
ACATInLove
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.