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

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

הדפסה

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

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

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

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

גורמים מפעילים

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

מקשי קיצור

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

טריגרים שמבוססים על אירועים

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

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

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

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

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

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

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