مشکلات رایجی که ممکن است هنگام تبدیل کد 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 امکانپذیر نیست.
فرمهای کاربری
در VBA، یک UserForm یک پنجره یا کادر محاورهای در رابط کاربری (UI) یک برنامه است. Macro Converter فرمهای کاربری را تبدیل نمیکند. میتوانید آنها را به صورت دستی در Apps Script ایجاد کنید.
ایجاد یک دیالوگ فرم کاربر
- در رایانهتان، فایل تبدیلشده را در Google 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، یک محدوده نامگذاری شده اضافه کنید که به نماد A1 محدوده جدول اشاره کند. از همان نام محدوده نامگذاری شده اصلی در کد VBA خود استفاده کنید تا کد تبدیل شده آن را تشخیص دهد. |
| فهرست محدودهها | در گوگل شیت پشتیبانی نمیشود. هیچ راه حلی برای آن وجود ندارد. |
مقالات مرتبط
- مرور کلی افزونهی مبدل ماکرو
- تعیین اینکه آیا ماکروهای VBA سازگار هستند یا خیر
- تبدیل ماکروهای VBA به اسکریپت برنامهها
- خطاهای موجود در کد تبدیل شده خود را برطرف کنید
- آموزشهای تبدیل ماکرو را تماشا کنید
- فهرست APIهای VBA سازگار