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

בהמשך מפורטות בעיות נפוצות שעשויות להתרחש במהלך ההמרה של קוד ה-VBA ל-Apps Script באמצעות Macro Converter.

הדפסה

ממשקי API של VBA שמדפיסים קבצים מומרים באופן אוטומטי ל-Apps Script, אבל יכול להיות שהם יפעלו באופן שונה מ-VBA API המקורי. בהמשך מופיעות שתי דוגמאות:

API של VBAהתנהגות ב-Apps Script
PrintOutההמרה מתבצעת ל-Apps Script, אבל ה-API של Apps Script מדפיס לקובץ במקום למדפסת. אפשר להדפיס את קובץ ה-PDF באופן ידני.
PrintToFileהמרה ל-Apps Script. קובץ ה-PDF יישמר בתיקייה 'האחסון שלי'.

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

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

טריגרים

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

מקשי קיצור

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

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

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

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

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

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

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

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

  1. במחשב, פותחים את הקובץ המומר ב-Google 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 ל-Google Sheets, חלק מסוגי טווחי השמות לא יומרו כי אין תמיכה בהם. לפניכם שתי דוגמאות:

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

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