בהמשך מפורטות בעיות נפוצות שעשויות להתרחש במהלך ההמרה של קוד ה-VBA ל-Apps Script באמצעות Macro Converter.
הדפסה
ממשקי API של VBA שמדפיסים קבצים מומרים באופן אוטומטי ל-Apps Script, אבל יכול להיות שהם יפעלו באופן שונה מ-VBA API המקורי. לפניכם שתי דוגמאות:
VBA API | התנהגות ב-Apps Script |
---|---|
PrintOut | ההמרה מתבצעת ל-Apps Script, אבל ה-API של Apps Script מדפיס לקובץ במקום למדפסת. אפשר להדפיס את קובץ ה-PDF באופן ידני. |
PrintToFile | המרה ל-Apps Script. קובץ ה-PDF נשמר בתיקייה MyDrive. |
פריטים שלא השלימו המרה
התכונות הבאות לא עוברות המרה על ידי ממיר המאקרו, וצריך להמיר אותן באופן ידני:
- סוגים מסוימים של טריגרים
- Userforms
- סוגי טווחים בעלי שם שלא נתמכים
טריגרים
שני סוגים של טריגרים, מקשי קיצור וטריגרים מסוימים שמבוססים על אירועים, לא עוברים המרה על ידי ממיר המאקרו. במקרים רבים אפשר ליצור את הטריגרים האלה באופן ידני.
מקשי קיצור
כדי להוסיף מקשי קיצור, פועלים לפי השלבים לייבוא פונקציות כמקרוסים.
טריגרים מבוססי-אירוע
לחלק מהאירועים בקוד VBA, כמו BeforeClose
או BeforeSave
, אין מקבילים ב-Apps Script, אבל יכול להיות שתוכלו למצוא פתרון עקיף.
לאירועים כמו BeforeClose
, אפשר ליצור תפריט או לחצן בהתאמה אישית שתלחצו עליהם כדי לבצע את הפעולה שצריך לבצע לפני סגירת הגיליון האלקטרוני.
מכיוון שכל עריכה נשמרת באופן אוטומטי ב-Google Sheets, לא ניתן למצוא פתרונות חלופיים לאירועים כמו BeforeSave
.
טפסים של משתמשים
ב-VBA, UserForm הוא חלון או תיבת דו-שיח בממשק המשתמש (UI) של האפליקציה. המרת המאקרו לא ממירה טפסים של משתמשים. אפשר ליצור אותם באופן ידני ב-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
- תיקון שגיאות בקוד המומר
- לצפייה במדריכים של Macro Converter
- רשימת ממשקי ה-API התואמים ל-VBA