טיפול בבעיות נפוצות

במדריך הזה מפורטות בעיות נפוצות שאתם עשויים להיתקל בהן כשאתם ממירים קוד 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.

פריטים שלא השלימו המרה

התכונות הבאות לא מומרות על ידי כלי המרת המאקרו, וצריך להמיר אותן באופן ידני:

טריגרים

שני סוגים של טריגרים, מקשי קיצור וטריגרים מסוימים שמבוססים על אירועים, לא מומרים על ידי הכלי להמרת פקודות מאקרו. במקרים רבים, אפשר ליצור את הטריגרים האלה באופן ידני.

מקשי קיצור

כדי להוסיף מקשי קיצור, פועלים לפי השלבים לייבוא פונקציות בתור פקודות מאקרו.

טריגרים מבוססי-אירועים

לחלק מהאירועים מקוד VBA, כמו BeforeClose או BeforeSave, אין מקבילות ב-Apps Script, אבל יכול להיות שאפשר ליצור פתרון עקיף.

לאירועים כמו BeforeClose, אפשר ליצור תפריט או לחצן מותאמים אישית שלוחצים עליהם כדי לבצע את הפעולה שצריך לבצע לפני שסוגרים את הגיליון האלקטרוני.

אי אפשר למצוא פתרונות עקיפים לאירוע BeforeSave כי Google Sheets שומרת את השינויים באופן אוטומטי תוך כדי עבודה.

טפסים למשתמשים

ב-VBA, ‏ UserForm הוא חלון או תיבת דו-שיח בממשק המשתמש (UI) של אפליקציה. הכלי Macro Converter לא ממיר UserForms. צריך ליצור אותם ידנית ב-Apps Script.

יצירת דו-שיח של טופס משתמש

  1. במחשב, פותחים את הקובץ שהומר ב-Sheets.
  2. למעלה, לוחצים על תוספים > ** Apps Script**.
  3. בצד ימין של העורך, לצד 'קבצים', לוחצים על סמל הוספת הקובץ > HTML. מומלץ לתת לקובץ ה-HTML את אותו שם כמו ל-UserForm המקורי של 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. מחליפים את userform_module_name בשם של קובץ ה-HTML שהוספתם.
  8. למעלה, לוחצים על סמל שמירת הפרויקט .
  9. עוברים לגיליון האלקטרוני ב-Google Sheets וטוענים מחדש את הדף.
  10. בחלק העליון של גיליון אלקטרוני ב-Google Sheets, לוחצים על טופס משתמש > הצגת הטופס.

טווחים בעלי שם

ב-Excel, טווחי תאים בעלי שם הם שמות שניתנים לתא יחיד או לטווח של תאים.

כשממירים קובצי Excel ל-Sheets, סוגים מסוימים של טווחי תאים בעלי שם לא מומרים כי הם לא נתמכים. בטבלה הבאה מפורטות דוגמאות נפוצות:

טווחים בעלי שם שלא נתמכיםתיאור
טבלאותאין תמיכה ב-Sheets, אבל יש פתרון עקיף.

כדי ליצור מחדש את טווח התאים בעל השם הזה ב-Sheets, מוסיפים טווח תאים בעל שם שמפנה לסימון A1 של טווח הטבלה. משתמשים באותו שם כמו הטווח המקורי עם השם בקוד VBA, כדי שהקוד שהומר יזהה אותו.
רשימת טווחיםהפונקציה לא נתמכת ב-Sheets. אין פתרון עקיף.