VBA से अंतर
Office Scripts एक स्क्रिप्टिंग सुविधा है, जो Excel on the web (Excel का वेब वर्ज़न), Excel for Windows और Excel for Mac में काम करती है।
Office Scripts और VBA, दोनों ही Microsoft द्वारा विकसित ऐसे ऑटोमेशन सिस्टम हैं, जो Office प्रोडक्ट्स पर चलते हैं।
फिर भी, दोनों भाषाओं के व्यवहार और सिंटैक्स में काफ़ी अंतर है।
इस लेख में नीचे दिए गए जैसे सैंपल कोड की मदद से Office Scripts और Excel के डेस्कटॉप वर्ज़न के VBA के बीच के अंतर समझाए गए हैं।
टैब बदलकर आप दोनों भाषाओं में लगभग एक जैसी प्रोसेसिंग की तुलना कर सकते हैं।
Public Sub Cubed(ByVal target As Long) Dim calculated As Long calculated = target ^ 3
Debug.Print (calculated)End Sub
Public Function Squared(ByVal target As Long) Squared = target ^ 2End Functionfunction cubed(target: number) { const calculated = target ** 3;
console.log(calculated);}
function squared(target: number) { return target ** 2;}बुनियादी सुविधाओं में अंतर
Section titled “बुनियादी सुविधाओं में अंतर”प्रोग्रामिंग भाषा के रूप में अंतर देखने से पहले, सुविधाओं के स्तर पर जो अंतर हैं, उन्हें नीचे दी गई टेबल में दिखाया गया है।
| पहलू | VBA | Office Scripts |
|---|---|---|
| समर्थित Excel | डेस्कटॉप वर्ज़न (Windows, Mac) | वेब वर्ज़न, Windows वर्ज़न, Mac वर्ज़न |
| पहुँच का दायरा | पूरा PC (Excel जितनी अनुमतियाँ) | केवल संबंधित वर्कबुक |
| अनुमतियों का प्रबंधन | पासवर्ड | अकाउंट |
| शेयर करना | ✓ | ✓ |
| कामों को रिकॉर्ड करना | ✓ | ✓ |
| दूसरी वर्कबुक पर काम करना | ✓ | × |
| Power Automate से चलाना | × | ✓ |
| लाइसेंस | Excel के डेस्कटॉप वर्ज़न के साथ शामिल | योग्य Microsoft 365 लाइसेंस |
※ “Power Automate से चलाना” क्लाउड फ़्लो के लिए है। Power Automate for desktop में “Run Excel macro” ऐक्शन से VBA मैक्रो चलाए जा सकते हैं।
मकसद एक ही है
Section titled “मकसद एक ही है”व्यवहार और सिंटैक्स अलग होने के बावजूद, दोनों का मकसद एक ही है: प्रोग्राम की मदद से Office सेवाओं के अंदर के डेटा को डायनामिक रूप से नियंत्रित करना।
Excel की सेल में लिखे जाने वाले फ़ंक्शन के विपरीत, इनसे शीट की संख्या या शीट की पंक्तियों और कॉलम की संख्या की परवाह किए बिना डेटा को नियंत्रित किया जा सकता है।
साथ ही, बाहरी सेवाओं के साथ इंटीग्रेशन (fetch से बाहरी कॉल) या Power Automate के ज़रिए दूसरी वर्कबुक और सेवाओं के साथ इंटीग्रेशन जैसी प्रोसेसिंग भी की जा सकती है, जो सेल के फ़ंक्शन से करना मुश्किल है।
रनटाइम एनवायरनमेंट के बारे में
Section titled “रनटाइम एनवायरनमेंट के बारे में”VBA, Excel के डेस्कटॉप वर्ज़न को ध्यान में रखकर बनाया गया सिस्टम है और यह अलग-अलग PC पर चलता है। इसके पास Excel जितनी ही अनुमतियाँ होती हैं, इसलिए यह PC की फ़ाइलों और दूसरे ऐप्लिकेशन तक भी पहुँच सकता है।
दूसरी ओर, Office Scripts सभी प्लेटफ़ॉर्म पर एक जैसे JavaScript रनटाइम पर चलती है, और इसे इस तरह डिज़ाइन किया गया है कि यह किसी भी एनवायरनमेंट से चलाने पर एक जैसा काम करे। यह केवल संबंधित वर्कबुक तक पहुँच सकती है और जिस PC पर स्क्रिप्ट चल रही है, उस तक इसकी पहुँच नहीं होती।
इसके अलावा, Office Scripts को Power Automate के फ़्लो से भी चलाया जा सकता है, जिससे Excel खोले बिना, शेड्यूल या ईमेल मिलने जैसे ट्रिगर के आधार पर वर्कबुक अपडेट की जा सकती है।
आधार भाषा के बारे में
Section titled “आधार भाषा के बारे में”Office Scripts, TypeScript पर आधारित है।
TypeScript एक ऐसी भाषा है, जो JavaScript में स्टैटिक टाइपिंग की सुविधा जोड़ती है, और टाइप डेफ़िनिशन को छोड़ दें तो इसे लिखने का तरीका लगभग JavaScript जैसा ही है।
भाषा के रूप में यह VBA की तुलना में Google Apps Script के ज़्यादा करीब है
Section titled “भाषा के रूप में यह VBA की तुलना में Google Apps Script के ज़्यादा करीब है”Google Sheets की मैक्रो सुविधा के रूप में इस्तेमाल होने वाली Google Apps Script भी JavaScript पर आधारित है।
वर्कबुक और शीट पर काम करने वाले फ़ंक्शन और मेथड के नाम अलग हैं, लेकिन कहा जा सकता है कि यह VBA की तुलना में Google Apps Script के ज़्यादा करीब है।
JavaScript के बारे में
Section titled “JavaScript के बारे में”JavaScript को सबसे ज़्यादा इस्तेमाल की जाने वाली भाषाओं में से एक माना जाता है, और यह वेब ब्राउज़र में चलने वाली भाषा है।
साथ ही, Node.js की मदद से सर्वर पर चलने वाली भाषा के रूप में भी इसका उपयोग लगातार बढ़ रहा है।
JavaScript का स्टैंडर्ड, जिसे ECMAScript कहा जाता है, हर साल अपडेट होता है, लेकिन ध्यान दें कि Office Scripts में इस्तेमाल होने वाला TypeScript वर्ज़न 4.0.3 पर फ़िक्स है, इसलिए उसके बाद TypeScript में जोड़ी गई सुविधाएँ इस्तेमाल नहीं की जा सकतीं।
फिर भी, JavaScript और TypeScript का उपयोग Office Scripts के अलावा भी कई जगहों पर होता है, इसलिए इन्हें सीखना फ़ायदेमंद ही रहेगा।
अंतर के ठोस उदाहरण
Section titled “अंतर के ठोस उदाहरण”अब असल में Office Scripts का उपयोग करके VBA से अंतर समझाते हैं।
फ़ंक्शन डिफ़ाइन करना
Section titled “फ़ंक्शन डिफ़ाइन करना”VBA में जिन फ़ंक्शन की कोई रिटर्न वैल्यू नहीं होती, उन्हें Sub और जिनकी रिटर्न वैल्यू होती है, उन्हें Function के रूप में डिफ़ाइन किया जाता है।
Office Scripts में रिटर्न वैल्यू हो या न हो, function से फ़ंक्शन डिफ़ाइन किया जा सकता है।
' रिटर्न वैल्यू वाले फ़ंक्शन के लिए Function का उपयोग करेंPublic Function Squared(ByVal target As Long) Squared = target ^ 2End Function
' रिटर्न वैल्यू के बिना वाले फ़ंक्शन के लिए Sub का उपयोग करेंPublic Sub Cubed(ByVal target As Long) Dim calculated As Long calculated = target ^ 3
Debug.Print (calculated)End Subfunction squared(target: number) { return target ** 2;}
// रिटर्न वैल्यू के बिना वाला फ़ंक्शन भी इसी तरहfunction cubed(target: number) { const calculated = target ** 3;
console.log(calculated);}वेरिएबल डिफ़ाइन करना
Section titled “वेरिएबल डिफ़ाइन करना”VBA में वेरिएबल डिफ़ाइन करने के लिए Dim और कॉन्स्टेंट डिफ़ाइन करने के लिए Const का उपयोग होता है।
Office Scripts में वेरिएबल डिफ़ाइन करने के लिए let और कॉन्स्टेंट डिफ़ाइन करने के लिए const का उपयोग होता है।
VBA में ऐरे के एलिमेंट की संख्या बाद में बदलनी हो, तो उसे डायनामिक ऐरे के रूप में डिक्लेयर करके ReDim से दोबारा डिफ़ाइन करना पड़ता था, लेकिन Office Scripts में इसकी ज़रूरत नहीं है।
' वेरिएबल डिफ़ाइन करनाDim count As Longcount = 1
' वेरिएबल में 2 जोड़नाcount = count + 2
' ऐरे डिफ़ाइन करना (अगर एलिमेंट की संख्या बाद में बदलनी हो, तो संख्या बताए बिना डिक्लेयर करें)Dim fruits() As StringReDim fruits(0)
' एलिमेंट की संख्या बदलने पर ReDim करना ज़रूरी है (Preserve से मौजूदा वैल्यू बनी रहती हैं)ReDim Preserve fruits(1)fruits(1) = "सेब"// वेरिएबल डिफ़ाइन करनाlet count = 1;
// वेरिएबल में 2 जोड़नाcount += 2;
// डिफ़ाइन करते समय एलिमेंट की संख्या बताने की ज़रूरत नहींconst fruits: string[] = [];
// बाद में ऐरे में जितने चाहें उतने एलिमेंट जोड़े जा सकते हैंfruits.push('सेब');if स्टेटमेंट और लूप
Section titled “if स्टेटमेंट और लूप”if स्टेटमेंट और लूप के बारे में नीचे दिए गए पेजों पर विस्तार से समझाया गया है।