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