שימוש ב-Microsoft Visual Basic for Applications
Using Microsoft Visual Basic for Applications
בניית תצוגות-תכנון (Planning Views) · שיעור 6
- VBA מרחיב את ה-add-in מעבר לתצורה-הסטנדרטית.
- שני שימושים: אוטומציה של Local Members, ו-hooks לאירועים.
- דורש .xlsm, error handling ובדיקת-תאימות.
- VBA מאוטמט יצירת Local Members מסוג formula.
מטרת השיעור
ידע אצורVBA (Visual Basic for Applications) הוא שפת-המאקרו של Excel, וניתן לרתום אותה כדי להרחיב את ה-IBP Excel add-in: אוטומציה של נוסחאות ב-Local Members, ו-'hooks' — נקודות-עיגון שבהן הקוד מופעל אוטומטית בעקבות פעולות-add-in (כמו Refresh או Save Data). זה מאפשר התאמות שאינן זמינות בתצורה-סטנדרטית. VBA לנוסחאות ב-Local Members — שימוש נפוץ ב-VBA הוא הזרקה-אוטומטית של נוסחאות ל-Local Members: במקום שהמתכנן יוסיף ידנית עמודות-חישוב בכל פתיחה, מאקרו מוסיף ומעדכן אותן אוטומטית — אחידות וחיסכון-זמן. Visual Basic for Applications: Hooks — Hooks הם נקודות-עיגון שבהן ה-IBP add-in מזמן אוטומטית קוד-VBA בעקבות אירועי-add-in — למשל אחרי Refresh או סביב Save Data. הם מאפשרים להזריק לוגיקה (ולידציה, עיצוב, יצירת Local Members) בדיוק בזמן-הנכון, בלי הפעלה ידנית.
למה זה חשוב
ידע אצורVBA הוא 'תכנות-בתוך-Excel' שמאפשר להקליט/לכתוב מאקרו שעושה דברים אוטומטית. ב-IBP אפשר להשתמש בו כדי שדברים יקרו לבד — למשל להוסיף נוסחאות אוטומטית, או להריץ קוד מיד אחרי ששלפת נתונים. VBA לנוסחאות ב-Local Members — אם אתה תמיד מוסיף את אותה עמודת-חישוב (למשל אחוז-דיוק) לתצוגה, מאקרו-VBA יכול להוסיף אותה בשבילך אוטומטית בכל פעם — כ-Local Member, כך שהיא גם שורדת Refresh. Visual Basic for Applications: Hooks — Hook הוא 'מלכודת-אירוע': אתה כותב שגרת-VBA בשם מסוים, וה-add-in קורא לה לבד כשמשהו קורה — למשל מיד אחרי שמשכת נתונים. כך הקוד שלך רץ בזמן-הנכון בלי שתלחץ כלום.
ערך עסקי
ידע אצורלהרחיב את ה-add-in מעבר לתצורה-הסטנדרטית: אוטומציה חוזרת, ולידציות-מותאמות והזרקת-לוגיקה בנקודות-אירוע — לחיסכון-זמן ולאחידות. VBA לנוסחאות ב-Local Members — להבטיח שכל תצוגה תכלול אוטומטית את חישובי-העזר הסטנדרטיים (KPIs/יחסים) — בלי הזנה ידנית חוזרת ובלי שונות בין מתכננים. Visual Basic for Applications: Hooks — להזריק לוגיקה-מותאמת בנקודות-אירוע מוגדרות — ולידציות, אוטומציה ועיצוב — באופן אוטומטי ועקבי לכל המתכננים.
היכן בשימוש
ידע אצור• Excel ► Developer ► Visual Basic (עורך-VBA) • Excel ► Developer ► Macros • VBA Editor ► מודול ► קריאה ל-IBP add-in API / הגדרת hooks • Excel ► Developer ► Visual Basic ► מודול-מאקרו • VBA ► קריאה ל-add-in API ► Create/Update Local Member (Formula) • Excel ► SAP IBP tab ► Save Template (.xlsm) • Excel ► Developer ► Visual Basic ► מודול עם שגרות-hook בשמות-מוסכמה • VBA ► post-Refresh / pre-Save / post-Save • Excel ► שמירה כ-.xlsm והפצה כ-template
מושגי מפתח
ידע אצור- VBA מרחיב את ה-add-in מעבר לתצורה-הסטנדרטית.
- שני שימושים: אוטומציה של Local Members, ו-hooks לאירועים.
- דורש .xlsm, error handling ובדיקת-תאימות.
- VBA מאוטמט יצירת Local Members מסוג formula.
- חבר ל-post-Refresh לעקביות.
- Local Members הם תצוגה בלבד; שמור ב-.xlsm/template.
- Hooks = קוד-VBA המופעל אוטומטית באירועי-add-in.
- post-Refresh לאוטומציה/עיצוב; pre-Save לולידציה-וחסימה.
- שמות-מוסכמה מדויקים + error handling + hooks רזים.
דוגמה מ-CBC
ידע אצורבארגון ה-key user בונה מאקרו-VBA המחובר ל-hook של post-Refresh: הוא מזריק Local Members של KPIs (Accuracy, Bias) ומחיל את עיצוב-ה-Formatting-Sheet — כל מתכנן מקבל תצוגה אחידה ומחושבת אוטומטית. key user כותב מאקרו-VBA שמופעל אחרי Refresh, מוסיף אוטומטית Local Member "Forecast Accuracy %" לכל SKU בגריד ומעצב אותו — כך המתכנן לא צריך להוסיפו ידנית בכל פתיחה. VBA לנוסחאות ב-Local Members — בארגון מאקרו מוסיף אוטומטית שלושה Local Members — Accuracy, Bias, MAPE — לכל SKU בכל תצוגת-ביקוש, כך שכל מתכנן-מדינה רואה אותם KPIs בלי להגדירם. מאקרו רץ ומוסיף Local Member עם הנוסחה Forecast/SalesHistory לכל שורה בגריד, ומעצב כאחוז; המתכנן פותח את התצוגה והעמודה כבר שם, מעודכנת. Visual Basic for Applications: Hooks — בארגון hook של pre-Save חוסם פרסום של תחזית מתחת/מעל ספים-עסקיים, ו-hook של post-Refresh מחיל את עיצוב-ה-Formatting-Sheet ומוסיף Local Members — בקרת-איכות ואחידות אוטומטיות לכל הצוות. key user מגדיר שגרת pre-Save שמוודאת שאין ערכים שליליים בתחזית; אם יש — היא מבטלת את ה-Save ומציגה הודעה. שגרת post-Refresh מזריקה Local Members של KPIs.
תהליך
ידע אצורטבלאות
ידע אצור| טבלה | תיאור |
|---|---|
| Local Member | Local Member |
| Planning View Definition | Planning View Definition |
| Macro / VBA Module | Macro / VBA Module |
| Key Figure | Key Figure |
טרנזקציות
ידע אצורקונפיגורציה (SPRO)
ידע אצור• הפעלת לשונית Developer ושמירת החוברת כ-.xlsm (תומכת-מאקרו). • כתיבת מאקרו הקורא ל-IBP add-in API (Refresh/Save/Local Members). • הגדרת hooks — שגרות בעלות-שם-מוסכם שה-add-in מזמן אחרי אירועים. • טיפול-בשגיאות ותיעוד — קוד-VBA חי בחוברת. VBA לנוסחאות ב-Local Members • מאקרו יוצר/מעדכן Local Member מסוג formula דרך ה-API. • הגדרת ביטוי-הנוסחה, מיקום והיקף (לכל שורה/SKU). • חיבור ל-post-Refresh hook לעדכון-אוטומטי. • שמירה ב-template/.xlsm להפצה. Visual Basic for Applications: Hooks • כתיבת שגרות-VBA בשמות-המוסכמה של ה-add-in (post-Refresh/pre-Save/post-Save). • pre-Save: ולידציה ויכולת-לבטל פרסום שגוי. • post-Refresh: הזרקת Local Members/עיצוב. • error handling חובה כדי לא להקריס את ה-add-in.
הערות
ידע אצורנתוני אב • Local Members שנוצרים הם חישוב-תצוגה בלבד — אינם נשמרים ל-IBP. שאלות ראיון כיצד VBA מרחיב את ה-IBP Excel add-in? דרך קריאה ל-API של ה-add-in (Refresh/Save/Local Members) ודרך hooks — שגרות שה-add-in מזמן אוטומטית אחרי אירועים — לאוטומציה, ולידציות והזרקת-לוגיקה. מהם הסיכונים בשימוש ב-VBA מול ה-add-in? הקוד חי בחוברת ועלול להישבר בעדכוני-add-in, hooks כבדים פוגעים בביצועים, וקוד ללא error handling עלול להקריס את ה-add-in. מדוע להזריק נוסחאות כ-Local Members דרך VBA ולא כנוסחאות-Excel? Local Members שורדים Refresh ונשמרים עם התצוגה, בעוד נוסחאות-Excel באזור-הנתונים נדרסות; VBA מאוטמט את יצירתן לאחידות. לאיזה hook נכון לחבר מאקרו של Local Members? ל-post-Refresh, כדי שהנוסחאות ייווצרו/יתעדכנו אחרי כל שליפת-נתונים. מהו hook ב-IBP Excel add-in? שגרת-VBA בעלת-שם-מוסכם שה-add-in מזמן אוטומטית באירוע (post-Refresh/pre-Save/post-Save), לצורך הזרקת ולידציה, אוטומציה או עיצוב בזמן-הנכון. כיצד hook יכול לחסום פרסום-נתונים שגוי? שגרת pre-Save מבצעת ולידציה ומחזירה ביטול אם הנתונים פסולים — כך ה-Save Data לא מתבצע. נושאים קשורים • S&OP · Local Members (11.3.2) • S&OP · VBA Hooks (11.6.2) • S&OP · VBA ל-Local Members (11.6.1)
טעויות נפוצות
ידע אצור- שמירה כ-.xlsx ➔ המאקרו אובד.
- hooks כבדים בכל Refresh ➔ פגיעה-בביצועים.
- קוד ללא טיפול-בשגיאות ➔ קריסת ה-add-in/Excel.
- תלות עיוורת ב-API פנימי ➔ שבירה בעדכון-add-in.
- ביטוי-נוסחה המפנה ל-Key Figure שלא בתצוגה ➔ שגיאה.
- אי-חיבור ל-post-Refresh ➔ הנוסחאות לא מתעדכנות אחרי שליפה.
- כתיבה לאזור-הנתונים במקום ל-Local Member ➔ נדרס ב-Refresh.
- שם-שגרה שגוי ➔ ה-hook לא נקרא כלל.
- hook ללא error handling ➔ קריסת ה-add-in באירוע.
- לוגיקה כבדה ב-post-Refresh ➔ כל שליפה איטית.
- pre-Save שלא מבטל כראוי ➔ פרסום-שגוי עובר.
פתרון תקלות
ידע אצור• המאקרו לא רץ ➔ מאקרו מושבת/חוברת לא-.xlsm או הגדרות-אבטחת-מאקרו. • ה-hook לא מופעל ➔ שם-השגרה אינו תואם את המוסכמה הצפויה של ה-add-in. • ה-add-in קורס אחרי Refresh ➔ שגיאת-VBA ב-hook; הוסף error handling. VBA לנוסחאות ב-Local Members • ה-Local Member לא נוצר ➔ קריאת-API שגויה או Key Figure חסר בתצוגה. • הנוסחה מציגה שגיאה ➔ הפניה לא-תקינה בביטוי. • החישוב לא מתעדכן ➔ המאקרו לא חובר ל-hook של Refresh. Visual Basic for Applications: Hooks • ה-hook לא מופעל ➔ שם-השגרה אינו תואם את המוסכמה. • Save עובר למרות ולידציה ➔ שגרת pre-Save לא מחזירה ביטול כנדרש. • Refresh נכשל/קורס ➔ שגיאה לא-מטופלת ב-post-Refresh hook.
שיטות עבודה מומלצות
ידע אצור- השתמש ב-VBA רק כשהתצורה-הסטנדרטית לא מספיקה.
- תעד, גרסֵן וטפל-בשגיאות בכל מאקרו.
- הפעל hooks רק היכן שנדרש כדי לשמור על ביצועים.
- בדוק תאימות אחרי כל עדכון-add-in.
- חבר את המאקרו ל-post-Refresh כדי לשמור עקביות.
- צור Local Members בלבד — לא נוסחאות באזור-הנתונים.
- תעד את ביטויי-הנוסחה ושמור ב-template אחיד.
- הקפד על שמות-המוסכמה המדויקים של ה-add-in.
- עטוף כל hook ב-error handling.
- שמור hooks רזים; הוצא לוגיקה כבדה למאקרו ידני.
- בדוק את ה-hooks אחרי כל עדכון-add-in.
טיפים
ידע אצור- ה-add-in חושף ממשק-תכנות ש-VBA יכול לקרוא לו (למשל הפעלת Refresh/Save Data, גישה ל-planning view וקריאה/כתיבה ל-Local Members), וכן 'hooks' — שגרות VBA בעלות-שם-מוסכם שה-add-in מזמן אוטומטית אחרי אירועים (post-Refresh, pre/post-Save). כך אפשר לאוטמט הזנת-Local-Members, ולידציות, או עיצוב לאחר כל רענון. שימוש זה דורש משמעת: קוד-VBA חי בחוברת ועלול להישבר בעדכוני-add-in; יש לתעד, לטפל-בשגיאות, ולהפעיל hooks רק היכן שצריך כדי לא לפגוע בביצועים.
- VBA לנוסחאות ב-Local Members — המאקרו ניגש ל-API של ה-add-in ויוצר/מעדכן Local Members מסוג formula — קובע את ביטוי-הנוסחה (על Key Figures/תאים), המיקום וההיקף (לכל שורה/SKU). מומלץ לחבר זאת ל-hook של post-Refresh (11.6.2) כדי שהנוסחאות יתעדכנו אחרי כל שליפה. כך מקבלים Local Members מחושבים-עקביים בלי תלות בזיכרון-המתכנן. שמור את ההגדרות ב-template וה-.xlsm כדי להפיץ.
- Visual Basic for Applications: Hooks — ה-add-in מגדיר שמות-שגרה מוסכמים (למשל post-Refresh, pre-Save, post-Save) שאם קיימים בחוברת — הם מופעלים אוטומטית באירוע המתאים. ב-pre-Save אפשר לבצע ולידציה ולחסום פרסום שגוי; ב-post-Refresh להזריק Local Members/עיצוב; ב-post-Save לרשום-יומן. חיוני: שמירה-מדויקת על שמות-המוסכמה, error handling שלא יקריס את ה-add-in, ושמירת ה-hooks רזים כדי לא להאט כל אירוע. ה-hooks הם המנגנון הרשמי להרחבת התנהגות-ה-add-in.
סיכום
ידע אצור• VBA מרחיב את ה-add-in מעבר לתצורה-הסטנדרטית. • שני שימושים: אוטומציה של Local Members, ו-hooks לאירועים. • דורש .xlsm, error handling ובדיקת-תאימות. • VBA מאוטמט יצירת Local Members מסוג formula. • חבר ל-post-Refresh לעקביות. • Local Members הם תצוגה בלבד; שמור ב-.xlsm/template. • Hooks = קוד-VBA המופעל אוטומטית באירועי-add-in. • post-Refresh לאוטומציה/עיצוב; pre-Save לולידציה-וחסימה. • שמות-מוסכמה מדויקים + error handling + hooks רזים.