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

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

הדפסה

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

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

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

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

טריגרים

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

מקשי קיצור

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

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

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

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

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

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

ב-VBA, ‏ UserForm הוא חלון או תיבת דו-שיח בממשק המשתמש של אפליקציה. כלי המרת המאקרו לא ממיר 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 וטוענים מחדש את הדף.
  10. בחלק העליון של גיליון Google, לוחצים על טופס משתמש > הצגת הטופס.

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

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

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

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

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