این راهنما مشکلات رایجی را که ممکن است هنگام تبدیل کد Visual Basic for Applications (VBA) به Apps Script با استفاده از Macro Converter با آنها مواجه شوید، فهرست میکند.
چاپ فایلها
APIهای VBA که فایلها را چاپ میکنند، بهطور خودکار به Apps Script تبدیل میشوند، اما ممکن است متفاوت از API VBA اصلی رفتار کنند. جدول زیر دو مثال را نشان میدهد:
| رابط برنامهنویسی VBA | رفتار در اسکریپت برنامهها |
|---|---|
PrintOut | به Apps Script تبدیل میشود، اما API Apps Script به جای چاپگر، در یک فایل چاپ میکند. فایل PDF را به صورت دستی چاپ کنید. |
PrintToFile | به Apps Script تبدیل میشود. فایل PDF در پوشه MyDrive شما ذخیره میشود. |
اقلام تبدیل نشده
ویژگیهای زیر توسط مبدل ماکرو تبدیل نمیشوند و باید به صورت دستی تبدیل شوند:
- برخی از انواع محرکها
- فرمهای کاربری
- انواع پشتیبانی نشدهی محدودههای نامگذاری شده
محرکها
دو نوع از تریگرها، میانبرهای صفحه کلید و برخی از تریگرهای مبتنی بر رویداد، توسط مبدل ماکرو تبدیل نمیشوند. در بسیاری از موارد، میتوانید این تریگرها را به صورت دستی ایجاد کنید.
میانبرهای صفحه کلید
برای افزودن میانبرهای صفحهکلید، مراحل وارد کردن توابع به عنوان ماکرو را دنبال کنید.
محرکهای مبتنی بر رویداد
برخی از رویدادهای کد VBA، مانند BeforeClose یا BeforeSave ، معادلی در Apps Script ندارند، اما ممکن است بتوانید یک راه حل موقت ایجاد کنید.
برای رویدادهایی مانند BeforeClose ، میتوانید یک منو یا دکمه سفارشی ایجاد کنید تا با کلیک روی آن، عملی که باید قبل از بستن صفحه گسترده انجام شود، انجام شود.
راهحلهایی برای رویداد BeforeSave امکانپذیر نیست، زیرا Google Sheets بهطور خودکار تغییرات را هنگام ایجاد آنها ذخیره میکند.
فرمهای کاربری
در VBA، یک UserForm یک پنجره یا کادر محاورهای در رابط کاربری (UI) یک برنامه است. مبدل ماکرو، UserFormها را تبدیل نمیکند. آنها را به صورت دستی در Apps Script ایجاد کنید.
ایجاد یک دیالوگ فرم کاربر
- در رایانهتان، فایل تبدیلشده را در Sheets باز کنید.
- در بالا، روی افزونهها > **اسکریپت برنامهها** کلیک کنید.
- در سمت چپ ویرایشگر، کنار «فایلها»، روی فایل > HTML کلیک کنید. توصیه میکنیم نام فایل HTML را با نام فرم کاربری VBA اصلی خود یکسان قرار دهید.
- فیلدها و اطلاعاتی را که میخواهید در فرم شما نمایش داده شود، اضافه کنید. برای اطلاعات بیشتر در مورد فرمهای HTML به W3school.com مراجعه کنید.
- در سمت چپ، روی فایل Apps Script (فایل GS) که کد تبدیلشدهی شما در آن قرار دارد، کلیک کنید.
- اگر از قبل یک تریگر
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); }
- به جای
userform_module_nameنام فایل HTML که اضافه کردهاید را قرار دهید. - در بالا، روی پروژه کلیک کنید.
- به صفحه گوگل بروید و صفحه را دوباره بارگذاری کنید.
- در بالای صفحه گوگل، روی فرم کاربر > نمایش فرم کلیک کنید.
محدودههای نامگذاری شده
در اکسل، محدودههای نامگذاریشده، نامهایی هستند که به یک سلول یا محدودهای از سلولها داده میشوند.
هنگام تبدیل فایلهای اکسل به Sheets، انواع خاصی از محدودههای نامگذاری شده تبدیل نمیشوند زیرا پشتیبانی نمیشوند. جدول زیر نمونههای رایج را فهرست میکند:
| محدودههای نامگذاریشدهی پشتیبانینشده | توضیحات |
|---|---|
| جداول | در Sheets پشتیبانی نمیشود، اما یک راه حل دارد. برای ایجاد مجدد این محدوده نامگذاری شده در Sheets، یک محدوده نامگذاری شده اضافه کنید که به نماد A1 محدوده جدول اشاره کند. از همان نام محدوده نامگذاری شده اصلی در کد VBA خود استفاده کنید تا کد تبدیل شده آن را تشخیص دهد. |
| فهرست محدودهها | در Sheets پشتیبانی نمیشود. هیچ راه حلی وجود ندارد. |
مقالات مرتبط
- نمای کلی افزونهی تبدیل ماکرو در گوگل ورک اسپیس
- تعیین اینکه آیا ماکروهای VBA سازگار هستند یا خیر
- تبدیل ماکروهای VBA به اسکریپت برنامهها
- خطاهای موجود در کد تبدیل شده خود را برطرف کنید
- آموزشهای تبدیل ماکرو را تماشا کنید
- فهرست APIهای VBA سازگار