به مسائل رایج رسیدگی کنید

مشکلات رایجی که ممکن است هنگام تبدیل کد VBA خود به Apps Script با مبدل ماکرو با آن مواجه شوید، در زیر فهرست شده است.

چاپ

API های VBA که فایل ها را چاپ می کنند به طور خودکار به Apps Script تبدیل می شوند، اما ممکن است متفاوت از API اصلی VBA رفتار کنند. در زیر دو نمونه آورده شده است:

VBA API رفتار در اسکریپت برنامه ها
PrintOut به Apps Script تبدیل می شود، اما Apps Script API به جای چاپگر به فایل چاپ می شود. می توانید فایل PDF را به صورت دستی چاپ کنید.
PrintToFile به اسکریپت برنامه ها تبدیل می شود. فایل PDF در پوشه MyDrive شما ذخیره می شود.

موارد تبدیل نشده

ویژگی های زیر توسط مبدل ماکرو تبدیل نمی شوند و باید به صورت دستی تبدیل شوند:

محرک ها

دو نوع محرک، میانبرهای صفحه کلید و برخی از محرک های مبتنی بر رویداد، توسط مبدل ماکرو تبدیل نمی شوند. در بسیاری از موارد، می توانید این محرک ها را به صورت دستی ایجاد کنید.

میانبرهای صفحه کلید

برای افزودن میانبرهای صفحه کلید، مراحل وارد کردن توابع به عنوان ماکرو را دنبال کنید.

محرک های مبتنی بر رویداد

برخی رویدادها از کد VBA، مانند BeforeClose یا BeforeSave ، معادلی در Apps Script ندارند، اما ممکن است بتوانید یک راه حل ایجاد کنید.

برای رویدادهایی مانند BeforeClose ، می‌توانید یک منو یا دکمه سفارشی ایجاد کنید تا روی آن کلیک کنید تا عملکردی را که باید قبل از بستن صفحه‌گسترده انجام دهید، انجام دهید.

از آنجایی که کاربرگ‌نگار Google هر ویرایش را به‌طور خودکار ذخیره می‌کند، راه‌حل‌هایی برای رویدادهایی مانند BeforeSave امکان‌پذیر نیست.

فرم های کاربری

در VBA، UserForm یک پنجره یا کادر محاوره ای در رابط کاربری برنامه (UI) است. مبدل ماکرو UserForms را تبدیل نمی کند. می توانید آنها را به صورت دستی در Apps Script ایجاد کنید.

یک گفتگوی فرم کاربر ایجاد کنید

  1. در رایانه، فایل تبدیل شده را در Google Sheets باز کنید.
  2. در بالا، روی Extensions > ** Apps Script** کلیک کنید.
  3. در سمت چپ ویرایشگر کنار «Files»، روی Add a file > HTML کلیک کنید. ما توصیه می کنیم که نام فایل HTML را با فرم اصلی VBA خود انتخاب کنید.
  4. فیلدها و اطلاعاتی را که می خواهید در فرم شما نمایش داده شود اضافه کنید. در مورد فرم های HTML در 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. نام فایل HTML را که اضافه کردید جایگزین userform_module_name کنید.
  8. در بالا، روی Save project کلیک کنید.
  9. به Google Sheet بروید و صفحه را دوباره بارگیری کنید.
  10. در بالای صفحه Google، روی User Form > Show Form کلیک کنید.

محدوده های نامگذاری شده

در اکسل، محدوده های نامگذاری شده، نام هایی هستند که به یک سلول یا محدوده ای از سلول ها داده می شود.

وقتی فایل اکسل خود را به Google Sheets تبدیل می کنید، برخی از انواع محدوده های نامگذاری شده تبدیل نمی شوند زیرا پشتیبانی نمی شوند. در زیر دو نمونه آورده شده است:

محدوده‌های نام‌گذاری‌شده پشتیبانی‌نشده توضیحات
جداول در Google Sheets پشتیبانی نمی‌شود، اما راه‌حلی دارد.

برای ایجاد مجدد این محدوده نام‌گذاری‌شده در Sheets، یک محدوده نام‌گذاری شده اضافه کنید که به نماد A1 محدوده جدول اشاره می‌کند. در کد VBA خود از همان نام محدوده با نام اصلی استفاده کنید تا کد تبدیل شده آن را تشخیص دهد.
لیست محدوده ها در Google Sheets پشتیبانی نمی شود. راه حلی وجود ندارد