अक्सर होने वाली समस्याएं ठीक करना

इस गाइड में, Macro Converter का इस्तेमाल करके Visual Basic for Applications (VBA) कोड को Apps Script में बदलते समय आने वाली सामान्य समस्याओं के बारे में बताया गया है.

फ़ाइलें प्रिंट करने वाले VBA API, Apps Script में अपने-आप बदल जाते हैं. हालांकि, ऐसा हो सकता है कि ये ओरिजनल VBA API से अलग तरीके से काम करें. यहां दी गई टेबल में दो उदाहरण दिखाए गए हैं:

VBA APIApps Script में व्यवहार
PrintOutApps Script में बदलता है, लेकिन Apps Script API, प्रिंटर के बजाय किसी फ़ाइल में प्रिंट करता है. PDF फ़ाइल को मैन्युअल तरीके से प्रिंट करें.
PrintToFileApps Script में बदलता है. PDF फ़ाइल, MyDrive फ़ोल्डर में सेव हो जाती है.

ऐसे आइटम जिनके लिए कन्वर्ज़न नहीं हुआ है

मैक्रो कन्वर्टर, इन सुविधाओं को नहीं बदलता. इसलिए, इन्हें मैन्युअल तरीके से बदलना होगा:

ट्रिगर

मैक्रो कन्वर्टर, दो तरह के ट्रिगर को नहीं बदलता. ये ट्रिगर हैं: कीबोर्ड शॉर्टकट और इवेंट पर आधारित कुछ ट्रिगर. ज़्यादातर मामलों में, इन ट्रिगर को मैन्युअल तरीके से बनाया जा सकता है.

कीबोर्ड शॉर्टकट

कीबोर्ड शॉर्टकट जोड़ने के लिए, फ़ंक्शन को मैक्रो के तौर पर इंपोर्ट करने का तरीका अपनाएं.

इवेंट पर आधारित ट्रिगर

वीबीए कोड के कुछ इवेंट, जैसे कि BeforeClose या BeforeSave, Apps Script में उपलब्ध नहीं हैं. हालांकि, आपके पास कोई दूसरा तरीका इस्तेमाल करने का विकल्प है.

BeforeClose जैसे इवेंट के लिए, कस्टम मेन्यू या बटन बनाया जा सकता है. इस पर क्लिक करके, स्प्रेडशीट बंद करने से पहले ज़रूरी कार्रवाई की जा सकती है.

BeforeSave इवेंट के लिए, कोई दूसरा तरीका इस्तेमाल नहीं किया जा सकता. ऐसा इसलिए, क्योंकि Google Sheets में बदलाव करते ही, उन्हें अपने-आप सेव कर लिया जाता है.

Userforms

वीबीए में, UserForm, किसी ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में मौजूद एक विंडो या डायलॉग होता है. Macro Converter, UserForms को नहीं बदलता है. Apps Script में मैन्युअल तरीके से बनाएं.

उपयोगकर्ता के लिए फ़ॉर्म वाला डायलॉग बनाना

  1. अपने कंप्यूटर पर, बदली गई फ़ाइल को Sheets में खोलें.
  2. सबसे ऊपर, एक्सटेंशन > ** Apps Script** पर क्लिक करें.
  3. एडिटर के बाईं ओर, "फ़ाइलें" के बगल में, फ़ाइल जोड़ें > एचटीएमएल पर क्लिक करें. हमारा सुझाव है कि आप एचटीएमएल फ़ाइल को वही नाम दें जो आपके ओरिजनल वीबीए UserForm का नाम है.
  4. वे फ़ील्ड और जानकारी जोड़ें जिन्हें आपको अपने फ़ॉर्म में दिखाना है. W3school.com पर जाकर, एचटीएमएल फ़ॉर्म के बारे में ज़्यादा जानें.
  5. बाईं ओर, उस Apps Script फ़ाइल (GS फ़ाइल) पर क्लिक करें जिसमें आपका बदला गया कोड है.
  6. अगर आपके कोड में पहले से ही onOpen ट्रिगर मौजूद है, तो उसे इस कोड से अपडेट करें. अगर आपके कोड में onOpen ट्रिगर नहीं है, तो यहां दिया गया कोड जोड़ें.
    function onOpen() {
     SpreadsheetApp.getUi()
         .createMenu('User Form')
         .addItem('Show Form', 'showForm')
         .addToUi();
    }
    function showForm() {
     var html = HtmlService.createHtmlOutputFromFile('userform_module_name')
         .setWidth(100)
         .setTitle('Sign-up for Email Updates');
     SpreadsheetApp.getUi().showSidebar(html);
    }
        
  7. userform_module_name की जगह, जोड़ी गई एचटीएमएल फ़ाइल का नाम डालें.
  8. सबसे ऊपर, प्रोजेक्ट सेव करें पर क्लिक करें.
  9. Google शीट पर जाएं और पेज को फिर से लोड करें.
  10. Google शीट में सबसे ऊपर, User Form > Show Form पर क्लिक करें.

नाम वाली रेंज

Excel में, नामित रेंज, किसी एक सेल या सेल की रेंज को दिए गए नाम होते हैं.

Excel फ़ाइलों को Sheets में बदलने पर, नाम वाली कुछ रेंज के टाइप नहीं बदले जाते. ऐसा इसलिए होता है, क्योंकि वे काम नहीं करते. यहां दी गई टेबल में, सामान्य उदाहरण दिए गए हैं:

नाम वाली ऐसी रेंज जिनका इस्तेमाल नहीं किया जा सकताब्यौरा
टेबलSheets में यह सुविधा काम नहीं करती, लेकिन इसे इस्तेमाल करने का एक तरीका है.

Sheets में इस नाम वाली रेंज को फिर से बनाने के लिए, नाम वाली एक ऐसी रेंज जोड़ें जो टेबल रेंज के A1 नोटेशन की ओर इशारा करती हो. अपने वीबीए कोड में, नाम वाली ओरिजनल रेंज के लिए इस्तेमाल किया गया नाम ही इस्तेमाल करें, ताकि बदला गया कोड उसे पहचान सके.
रेंज की सूचीयह सुविधा Sheets में काम नहीं करती. इस समस्या को ठीक करने का कोई तरीका नहीं है.