במדריך הזה מפורטות בעיות נפוצות שאתם עשויים להיתקל בהן כשאתם ממירים קוד Visual Basic for Applications (VBA) ל-Apps Script באמצעות Macro Converter.
הדפסת קבצים
ממשקי VBA API שמדפיסים קבצים מומרים אוטומטית ל-Apps Script, אבל יכול להיות שהם יתנהגו באופן שונה מממשקי VBA API המקוריים. בטבלה הבאה מוצגות שתי דוגמאות:
| VBA API | התנהגות ב-Apps Script |
|---|---|
PrintOut | ההמרה מתבצעת ל-Apps Script, אבל ה-API של Apps Script מדפיס לקובץ במקום למדפסת. מדפיסים את קובץ ה-PDF באופן ידני. |
PrintToFile | המרת קובץ ל-Apps Script. קובץ ה-PDF נשמר בתיקייה MyDrive. |
פריטים שלא השלימו המרה
התכונות הבאות לא מומרות על ידי כלי המרת המאקרו, וצריך להמיר אותן באופן ידני:
- חלק מהסוגים של טריגרים
- Userforms
- סוגים לא נתמכים של טווחים בעלי שם
טריגרים
שני סוגים של טריגרים, מקשי קיצור וטריגרים מסוימים שמבוססים על אירועים, לא מומרים על ידי הכלי להמרת פקודות מאקרו. במקרים רבים, אפשר ליצור את הטריגרים האלה באופן ידני.
מקשי קיצור
כדי להוסיף מקשי קיצור, פועלים לפי השלבים לייבוא פונקציות בתור פקודות מאקרו.
טריגרים מבוססי-אירועים
לחלק מהאירועים מקוד VBA, כמו BeforeClose או BeforeSave, אין מקבילות ב-Apps Script, אבל יכול להיות שאפשר ליצור פתרון עקיף.
לאירועים כמו BeforeClose, אפשר ליצור תפריט או לחצן מותאמים אישית שלוחצים עליהם כדי לבצע את הפעולה שצריך לבצע לפני שסוגרים את הגיליון האלקטרוני.
אי אפשר למצוא פתרונות עקיפים לאירוע BeforeSave כי Google Sheets שומרת את השינויים באופן אוטומטי תוך כדי עבודה.
טפסים למשתמשים
ב-VBA, UserForm הוא חלון או תיבת דו-שיח בממשק המשתמש (UI) של אפליקציה. הכלי Macro Converter לא ממיר UserForms. צריך ליצור אותם ידנית ב-Apps Script.
יצירת דו-שיח של טופס משתמש
- במחשב, פותחים את הקובץ שהומר ב-Sheets.
- למעלה, לוחצים על תוספים > ** Apps Script**.
- בצד ימין של העורך, לצד 'קבצים', לוחצים על סמל הוספת הקובץ > HTML. מומלץ לתת לקובץ ה-HTML את אותו שם כמו ל-UserForm המקורי של 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 שהוספתם. - למעלה, לוחצים על סמל שמירת הפרויקט .
- עוברים לגיליון האלקטרוני ב-Google Sheets וטוענים מחדש את הדף.
- בחלק העליון של גיליון אלקטרוני ב-Google Sheets, לוחצים על טופס משתמש > הצגת הטופס.
טווחים בעלי שם
ב-Excel, טווחי תאים בעלי שם הם שמות שניתנים לתא יחיד או לטווח של תאים.
כשממירים קובצי Excel ל-Sheets, סוגים מסוימים של טווחי תאים בעלי שם לא מומרים כי הם לא נתמכים. בטבלה הבאה מפורטות דוגמאות נפוצות:
| טווחים בעלי שם שלא נתמכים | תיאור |
|---|---|
| טבלאות | אין תמיכה ב-Sheets, אבל יש פתרון עקיף.
כדי ליצור מחדש את טווח התאים בעל השם הזה ב-Sheets, מוסיפים טווח תאים בעל שם שמפנה לסימון A1 של טווח הטבלה. משתמשים באותו שם כמו הטווח המקורי עם השם בקוד VBA, כדי שהקוד שהומר יזהה אותו. |
| רשימת טווחים | הפונקציה לא נתמכת ב-Sheets. אין פתרון עקיף. |
מאמרים קשורים
- סקירה כללית של התוסף Macro Converter ל-Google Workspace
- איך קובעים אם פקודות מאקרו של VBA תואמות
- המרת פקודות מאקרו של VBA ל-Apps Script
- תיקון שגיאות בקוד שהומר
- צפייה במדריכים בנושא Macro Converter
- רשימה של ממשקי API תואמים של VBA