בהמשך מפורטות בעיות נפוצות שעשויות להתרחש במהלך ההמרה של קוד ה-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.
יצירת תיבת דו-שיח של טופס משתמש
- במחשב, פותחים את הקובץ המומר ב-Google 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 ל-Google Sheets, חלק מסוגי טווחי השמות לא יומרו כי אין תמיכה בהם. לפניכם שתי דוגמאות:
טווחים בעלי שם שלא נתמכים | תיאור |
---|---|
טבלאות | לא נתמך ב-Google Sheets, אבל יש בו פתרון עקיף.
כדי ליצור מחדש את טווח התאים בעל השם הזה ב-Sheets, מוסיפים טווח תאים בעל שם שמצביע על הסימון A1 של טווח הטבלה. צריך להשתמש באותו שם של טווח השמות המקורי בקוד ה-VBA כדי שהקוד המומר יזהה אותו. |
רשימת טווחים | אין תמיכה ב-Google Sheets. אין פתרון עקיף. |
מאמרים קשורים
- סקירה כללית על התוסף Macro Converter
- איך בודקים אם מאקרו VBA תואם
- המרת פקודות מאקרו של VBA ל-Apps Script
- תיקון שגיאות בקוד המומר
- צפייה במדריכים בנושא המרת מאקרו
- רשימת ממשקי ה-API התואמים ל-VBA