M365Con 2027 – כנס אונליין חינמי · 11–22 Jan 2027 · 120 sessions→ m365con.net

בלוג · Mirko Peters

מעבר מ-VBA ל-Office Add-ins: למה למפתחי ווב יש יתרון

By ·

במשך עשורים, Visual Basic for Applications, הידוע בשם VBA, היה המלך הבלתי מעורער של אוטומציה במשרד. אם רצית לבנות טפסים מותאמים אישית, לאוטומטי עיבוד נתונים או ליצור דוחות מורכבים ב-Microsoft Excel או Word, VBA היה הכלי העיקרי שלך. אבל הזמנים השתנו. ככל שארגונים מאמצים ארכיטקטורות שפועלות קודם כול בענן, תאימות בין פלטפורמות וערימות פיתוח ווב מודרניות, מאקרואים מבוססי שולחן עבודה שנשענים על טכנולוג

Automatically translated with AI from the original post. Read the English original

▶ BLOGMigrating from VBA toOffice Add-ins: Why Web…M365.FM
Titelbild: Migrating from VBA to Office Add-ins: Why Web Developers Have the Advantage

במשך עשורים, Visual Basic for Applications, הידוע בשם VBA, היה המלך הבלתי מעורער של אוטומציה במשרד. אם רצית לבנות טפסים מותאמים אישית, לאוטומטי עיבוד נתונים או ליצור דוחות מורכבים ב-Microsoft Excel או Word, VBA היה הכלי העיקרי שלך. אבל הזמנים השתנו. ככל שארגונים מאמצים ארכיטקטורות שפועלות קודם כול בענן, תאימות בין פלטפורמות וערימות פיתוח ווב מודרניות, מאקרואים מבוססי שולחן עבודה שנשענים על טכנולוגיה ישנה הופכים יותר ויותר לחסם של חוב טכני.

אם אתם מפתחי ווב מודרניים שמכירים HTML, CSS ו-JavaScript, יש לכם למעשה יתרון תחרותי משמעותי בהרחבת Microsoft 365. אינכם צריכים ללמוד שפה מדור קודם הקשורה לארכיטקטורת Windows. במקום זאת, אתם יכולים לנצל את ערימת הפיתוח הקיימת שלכם כדי לבנות תוספים ל-Office שהם עוצמתיים, מאובטחים ורב-פלטפורמיים. בואו נצלול לעומק ונבין למה המעבר מ-VBA אל Office Add-ins מודרניים הוא הצעד החכם ביותר שאפשר לעשות למען הקריירה שלכם ולמען הארגון שלכם.

TL;DR

Office Add-ins הם אפליקציות ווב שפועלות בתוך Office. מניפסט XML קטן קובע היכן הן מופיעות, וה-Office JavaScript API מאפשר לקוד שלכם לקרוא ולכתוב מסמכים בצורה בטוחה. בונים פעם אחת, מריצים ב-Windows, Mac ו-Office for the web, ומפרסמים עדכונים כמו בכל אפליקציית ווב מודרנית.

מה הם (ומה הם לא)

  • הם: HTML/CSS/JS (או React/Angular/Vue) המאוחסנים על שרת הווב שלכם ומוצגים ב-Office כחלוניות משימה, תוספי תוכן או פקודות.
  • הם לא: בינאריים מסוג COM/VSTO, מתקיני מכונה או תוספים התלויים במערכת ההפעלה. עדכונים מופצים באמצעות פריסה מחדש של אפליקציית הווב שלכם.

בניגוד ל-VSTO (Visual Studio Tools for Office) הישנים או לתוספי COM, שדרשו מתקינים מורכבים ברמת המכונה, עריכות רישום ושילוב הדוק עם מערכת ההפעלה המקומית, Office Add-ins מודרניים הם למעשה דפי ווב המאוחסנים בתוך רכיב דפדפן מאובטח המוטמע ב-Office. המשמעות היא שצינור הפריסה שלכם נראה זהה לפריסה של כל אפליקציית ווב אחרת.

שלושת הרכיבים המרכזיים

  1. מניפסט (XML): התוכנית הבסיסית – מיקום (סרט/פקודות), היקף (Word/Excel), הרשאות וכתובות SourceLocation.
  2. אפליקציית ווב: ממשק המשתמש והלוגיקה שלכם, בכל ערימת קידוד לצד לקוח, ומתממשקת ל-API שלכם.
  3. Office JS API: הגשר לנתוני הגליון או המסמך (אסינכרוני, מוגבל לאובייקטים Office/Excel/Word).

מניפסט מינימלי (תבנית התחלה להעתקה והדבקה)

<?xml version="1.0" encoding="UTF-8"?><OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp" Version="1.0.0.0" Id="00000000-0000-0000-0000-000000000001" ProviderName="Contoso" DefaultLocale="en-US" DisplayName DefaultValue="Contoso Reports"> <Hosts> <Host Name="Workbook"/> <Host Name="Document"/> </Hosts> <DefaultSettings> <SourceLocation DefaultValue="https://yourdomain.com/addin/index.html"/> </DefaultSettings> <Permissions>ReadWriteDocument</Permissions> <VersionOverrides xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xsi:type="VersionOverridesV1_0"> <Hosts> <Host xsi:type="Workbook"> <Ribbons> <Ribbon> <Tabs> <Tab id="Contoso.Tab" label="Contoso"> <Group id="Contoso.Group" label="Reports"> <Control id="Contoso.OpenPane" label="Open" type="Button" superTip="Open Contoso task pane" onAction="ContosoAction.OpenPane"/> </Group> </Tab> </Tabs> </Ribbon> </Ribbons> <Actions> <FunctionFile resid="Contoso.FunctionFile.Url"/> <Function Name="ContosoAction.OpenPane"/> </Actions> </Host> </Hosts> <Resources> <bt:Urls xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"> <bt:Url id="Contoso.FunctionFile.Url" DefaultValue="https://yourdomain.com/addin/functions.html"/> </bt:Urls> </Resources> </VersionOverrides></OfficeApp>

החליפו את SourceLocation וכתובות ה-URL בשרת המארח שלכם. שמרו על Permissions ברמה מינימלית (למשל ReadDocument) עד שבאמת תצטרכו הרשאת כתיבה.

קוד מינימלי ל-Excel (Office.js)

// index.html includes: <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>Office.onReady(() => { // Wire UI events, then…});async function writeMarkup() { await Excel.run(async (context) => { const sheet = context.workbook.worksheets.getActiveWorksheet(); const range = sheet.getRange("A1:B2"); range.values = [["Product", "Revenue"], ["Widgets", 125000]]; range.format.autofitColumns(); await context.sync(); });}async function readSelection() { await Excel.run(async (context) => { const range = context.workbook.getSelectedRange(); range.load("values,address"); await context.sync(); console.log("Selected:", range.address, range.values); });}

כללי מפתח

  • השתמשו ב-Excel.run(ctx => { …; return ctx.sync(); }) כדי לאגד פעולות ולהחיל אותן.
  • טענו תחילה את הנתונים (range.load("props")), הפעילו await context.sync(), ואז קראו את הערכים.
  • הכול אסינכרוני — שרשרו פעולות במקום עריכות אימפרטיביות בסגנון DOM.

חלונית משימות לעומת תוספי תוכן

  • חלונית משימות: ממשק צדדי; מתאים במיוחד לכלים, חיפושים, פעולות על נתונים ואוטומציות.
  • תוסף תוכן: מוצג בתוך המסמך או הגיליון (למשל ויזואל מוטמע, מפה או אריח KPI).
  • פקודות: כפתורים בסרגל הכלים שפותחים חלוניות או מריצים פונקציות JavaScript.

נתיבי פריסה

  • פריסה מרוכזת (מרכז הניהול): הקצאה לפי משתמש, קבוצה או דייר.
  • שיתוף מניפסט ברשת או לפי URL: טעינה ישירה (side-load) לפיתוח ולבדיקות.
  • AppSource: שוק ציבורי (נדרשת התאמה למיתוג ולדרישות הציות).

טיפים לאבטחה וממשל

  • עקרון ההרשאות המינימליות ב-<Permissions>.
  • CORS, CSP ו-HTTPS לכל הנכסים.
  • אל תאחסנו טוקנים ב-localStorage; עדיף session וטוקנים עם תוקף קצר.
  • אם משתמשים ב-SSO, חברו את Office SSO (עם אפליקציית Entra), או עברו ל-PKCE/OAuth כחלופה.
  • רשמו פעולות ללא מידע מזהה אישית לצורך תמיכה, וכבדו את מדיניות ה-DLP של הדייר.

שילובים עם Power Platform (יתרונות נוספים)

  • הפעילו זרימות של Power Automate מתוך החלונית (למשל “שליחה להנהלת הכספים”).
  • הטמיעו אריחים או דוחות של Power BI בתוך חלונית המשימות.
  • השתמשו ב-Graph לנתוני Microsoft 365 (דואר, קבצים) היכן שזה מתאים.

תקלות נפוצות (ותיקונים)

  • שום דבר לא מופיע בסרגל הכלים: מזהי המניפסט או המיקומים שגויים, או שהמארח שגוי (למשל תוסף שמיועד ל-Word בלבד, מותקן ב-Excel).
  • הקוד "לא עושה כלום": חסר Excel.run או await context.sync().
  • האימות נשבר ב-Mac וב-Web: ודאו שמותרים cross-origin, SSO וזרימות חלונות קופצים; בדקו בכל ה-hosts.
  • שגיאות הרשאות: היכולת המבוקשת אינה מופיעה ב-manifest (למשל כתיבה ללא ReadWriteDocument).

מבנה הקבצים הבסיסי

/addin /public index.html functions.html styles.css /src app.js excel-actions.js manifest.xml

בנו את זה השבוע: רשימת בדיקה בחמישה שלבים

  1. שלד הפרויקט: צרו את index.html, כללו את office.js והציגו ממשק פשוט.
  2. חיבור ל-Excel: הוסיפו פעולת קריאה אחת (הבחירה) ופעולת כתיבה אחת (A1:B2) דרך Excel.run.
  3. ה-manifest: הצביעו SourceLocation אל index.html; הגדירו את ReadDocument כהרשאה הראשונה.
  4. התקנה לבדיקה (Side-load): התקינו בסביבת פיתוח (Office on web או בשולחן העבודה) ובדקו שהכפתור בסרגל והחלונית מופיעים.
  5. חיזוק: הוסיפו טיפול בשגיאות, צמצמו הרשאות, בדקו ב-Mac ובדפדפן, ואז תכננו פריסה מרכזית.

שאלות נפוצות

ש: האם צריך ניסיון ב-VBA או ב-VSTO?
לא. תוספות מודרניות הן אפליקציות ווב טהורות עם Office JS. כישורי פיתוח ווב עוברים אליהן ישירות.

ש: האם בסיס קוד אחד יכול לרוץ בכל מקום?
כן. Windows, Mac ו-Office for the web (יש לאמת תכונות לפי host ולפי requirement sets).

ש: איך מתבצעים העדכונים?
פורסים build חדש של הווב; הלקוחות מקבלים אותו בטעינה הבאה. מעדכנים את ה-manifest רק עבור פקודות או הרשאות חדשות.

סיכום

תוספות Office הן הדרך הנקייה ביותר להפוך כישורי ווב לאוטומציה אמיתית של Excel ו-Word: ניידות, ניתנות לממשל ומהירות לפרסום. שלטו ב-manifest, כבדו את זרימת ה-async של Office JS, ותוכלו להיפטר מערימה של דיווחים ידניים (ומהרבה העתקה והדבקה). כדי ללמוד עוד על פתיחת היכולות האלה בלי לגעת ב-VBA, כדאי לצפות בפרק הפודקאסט הנלווה: Build Office Add-Ins for Excel and Word Without VBA.

Entities in this article

Microsoft Excel HTTP JavaScript Technical debt Azure Functions Microsoft Agent skill React Visual Studio

Related articles

RSS