סיכום

מפתחים יכולים להשתמש באוטומציה ב-Microsoft Office כדי לבנות פתרונות מותאמים אישית המשתמשים ביכולות ובתכונות המוכללות במוצר Office. למרות שניתן ליישם פיתוח תיכנותי כזה במערכת לקוח בקלות יחסית, מספר סיבוכים עשוי להתרחש אם האוטומציה מתבצעת מקוד בצד השרת, כגון Microsoft Active Server Pages (ASP), ASP.NET, DCOM או שירות Windows NT. מאמר זה דן בסיבוכים שמפתחים עשויים להתמודד איתם. המאמר מציע גם חלופות לאוטומציה שיכולות להאיץ את הביצועים. עם זאת, על מפתחים להיות מודעים לכך שההצעות שמאמר זה מספק הן למטרות מידע בלבד. Microsoft אינה ממליצה או תומכת באוטומציה בצד השרת של Office.

הערה

בהקשר זה, הניתנת להפצה חוזרת של מנגנון מסד הנתונים של Access וזמן ריצה של Access נחשבות לרכיבי Microsoft Office. המונח "שרת בצד" חל גם על קוד הפועל בתחנת עבודה של Windows, אם הקוד פועל מתחנת עבודה של Windows שאינה התחנה האינטראקטיבית של המשתמש שמחובר אליה. לדוגמה, קוד המופעל על-ידי מתזמן המשימות מתחת לחשבון המערכת פועל באותה סביבה כמו קוד ASP של "בצד השרת" או כקוד DCOM. לכן, רבים מהבעיות המתוארות במאמר זה עלולות להתרחש. לקבלת מידע נוסף אודות תחנות עבודה של Windows ואודות COM, עיין בסעיף "מידע נוסף" ובמקטע ' הפניות '.

מידע נוסף

כל הגירסאות הנוכחיות של Microsoft Office עוצבו, נבדקו והוגדרו לפעול כמוצרי משתמש קצה בתחנת עבודה של לקוח. הם מניחים שולחן עבודה אינטראקטיבי ופרופיל משתמש. הם אינם מספקים את רמת הכניסות או האבטחה הנדרשת כדי לענות על הצרכים של רכיבים בצד השרת שנועדו לפעול ללא השגחה. Microsoft אינה ממליצה כעת, ואינה תומכת באוטומציה של יישומי Microsoft Office מתוך יישום לקוח ללא התערבות שאינו אינטראקטיבי או רכיב כלשהו (כולל ASP, ASP.NET, DCOM ו-NT Services), משום ש-Office עשוי להציג התנהגות לא יציבה ו/או קיפאון כאשר Office מופעל בסביבה זו. אם אתה בונה פתרון הפועל בהקשר בצד השרת, עליך לנסות להשתמש ברכיבים שבוצעו בטוחים עבור ביצוע ללא התערבות. לחלופין, כדאי שתנסה למצוא חלופות המאפשרות לפחות חלק מהקוד להפעלת צד הלקוח. אם אתה משתמש ביישום של Office מתוך פתרון בצד השרת, היישום לא יחסר רבות מהיכולות הדרושות כדי לפעול בהצלחה. בנוסף, אתה תסתכן ביציבות הפתרון הכולל שלך.

בעיות באוטומציה בצד השרת של Office

מפתחים שמנסים להשתמש ב-Office בפתרון בצד השרת צריכים להיות מודעים לחמישה תחומים עיקריים שבהם Office פועל באופן שונה מהצפוי עקב הסביבה. אם הקוד שלך הוא לפעול בהצלחה, עליך לטפל בבעיות אלה ולמזער את ההשפעות שלהן ככל שניתן. שקול בעיות אלה בזהירות בעת בניית היישום. פתרון אחד אינו יכול לטפל בכל הבעיות. עיצובים שונים דורשים ממך לתעדף את הרכיבים באופן שונה.

  • זהות משתמש: יישומי Office מניחים זהות משתמש כאשר היישומים מופעלים, גם כאשר האוטומציה מפעילה את היישומים. היישומים מנסים לאתחל סרגלי כלים, תפריטים, אפשרויות, מדפסות ותוספות מסוימות בהתבסס על ההגדרות בכוורת הרישום של המשתמש עבור המשתמש שמפעיל את היישום. שירותים רבים פועלים תחת חשבונות ללא פרופילי משתמשים (כגון חשבון המערכת או חשבונות הIWAM_ [servername]). לכן, ייתכן ש-Office לא יאותחל כראוי במהלך האתחול. במצב זה, Office מחזיר שגיאה בפונקציה CreateObject או בפונקציה CoCreateInstance . גם אם ניתן להפעיל את יישום Office, ייתכן שפונקציות אחרות לא יפעלו כראוי אם לא קיים פרופיל משתמש.

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

  • כניסות ומדרגיות: רכיבים בצד השרת צריכים להיות מאוד קריאות, רכיבי COM מרובי הליכי משנה הכוללים תקורה מינימלית ותפוקה גבוהה עבור לקוחות מרובים. יישומי Office מכבדים כמעט את ההיפך בדיוק. יישומי Office הם שרתי אוטומציה מבוססי-STA שאינם קריאות, שנועדו לספק פונקציונליות מגוונת אך עתירת משאבים עבור לקוח יחיד. היישומים מציעים מדרגיות קטנה כפתרון בצד השרת. בנוסף, היישומים מכילים מגבלות קבועות לרכיבים חשובים, כגון זיכרון. לא ניתן לשנות את ההגדרות בתצורה. חשוב יותר, היישומים משתמשים במשאבים כלליים כגון קבצים ממופים בזיכרון, תוספות כלליות או תבניות ושרתי אוטומציה משותפים. פעולה זו עשויה להגביל את מספר המופעים שיכולים לפעול בו ועשויים להוביל לתנאי גזע אם היישומים מוגדרים בסביבה מרובת לקוחות. מפתחים שמתכננים לבצע הפעלת יותר ממופע אחד של יישום Office בו צריכים לשקול "להעביר" או לערוך בסידרה את הגישה ליישום Office כדי למנוע קיפאון פוטנציאליים או השחתת נתונים.

  • גמישות ויציבות: office 2000, office XP, office 2003 ו-Office 2007 שימוש בטכנולוגיית Microsoft Windows INSTALLER (MSI) כדי להקל על ההתקנה והתיקון העצמי של משתמש קצה. MSI מציג את הרעיון של "התקנה בשימוש הראשון". פעולה זו מאפשרת התקנה או הגדרה דינמית של תכונות בזמן הריצה עבור המערכת, או לעתים קרובות יותר עבור משתמש מסוים. בסביבה בצד השרת, פעולה זו מאיטה את הביצועים ומגדילה את הסבירות שתיבת דו-שיח עשויה להיראות ששואלת את המשתמש לאשר את ההתקנה או לספק דיסק התקנה. למרות שאפשרות זו מיועדת להגדיל את הגמישות של Office כמוצר של משתמש קצה, היישום של Office של יכולות MSI אינו מועיל בסביבה בצד השרת. בנוסף, אין אפשרות להבטיח את היציבות של Office באופן כללי כאשר Office פועל בצד השרת מכיוון שהוא לא תוכנן או נבדק עבור סוג שימוש זה. שימוש ב-Office כרכיב שירות בשרת רשת עשוי להפחית את היציבות של מחשב זה, ולכן עשוי לצמצם את היציבות של הרשת כולה.

  • אבטחה בצד השרת: יישומי Office לא נועדו לשימוש בצד השרת. לכן, יישומי Office אינם מתחשבים בבעיות האבטחה שהרכיבים המופצים מפנים. Office אינו מאמת בקשות נכנסות. Office גם אינו מגונן עליך מפני הפעלה לא מכוונת של פקודות מאקרו, או מהפעלת שרת אחר שעשוי להפעיל פקודות מאקרו, מהקוד בצד השרת. אל תפתח קבצים שנטענו לשרת מאתר אינטרנט אנונימי. בהתבסס על הגדרות האבטחה שהוגדרו לאחרונה, השרת יכול להפעיל פקודות מאקרו תחת הקשר מנהל או מערכת עם הרשאות מלאות ולכן אפשרות לסכן את הרשת שלך. בנוסף, Office משתמש ברכיבים רבים בצד הלקוח (כגון MAPI, WinInet ו-MSDAIPP פשוטים) שיכולים לאחסן במטמון מידע אימות לקוח כדי להאיץ את העיבוד. אם Office מתבצע בתור מחשב אוטומטי, מופע אחד עשוי לשרת יותר מלקוח אחד. אם מידע האימות מאוחסן במטמון עבור הפעלה זו, לקוח אחד יכול להשתמש באישורים המאוחסנים במטמון של לקוח אחר. לכן, הלקוח עשוי לרכוש הרשאות גישה שאינן ניתנות לגישה על-ידי התחזות למשתמשים אחרים.

מלבד בעיות טכניות, עליך גם לשקול בעיות רישוי. הנחיות הרישוי הנוכחי מונעות משימוש ביישומי Office בשרת כדי לספק בקשות ללקוח, אלא אם ללקוחות אלה יש עותקים מורשים של Office. השימוש באוטומציה בצד השרת כדי לספק פונקציונליות של Office לתחנות עבודה ללא רשיון אינו מכוסה על-ידי הסכם הרשיון למשתמש קצה (EULA). בנוסף לבעיות אלה, אחת מהשגיאות הנפוצות הבאות עלולה להתרחש כאשר אתה מנסה להפוך את Office בצד השרת לאוטומטי:

  • הפונקציה CreateObject והפונקציה CoCreateInstance מחזירות אחת מהודעות השגיאה הבאות של זמן ריצה ואין אפשרות להפעיל אותה לצורך אוטומציה.

    הודעה 1

    שגיאת זמן ריצה ' 429 ': לרכיב ActiveX אין אפשרות ליצור אובייקט

    הודעה 2

    שגיאת זמן ריצה ' 70 ': הרשאה נדחתה

    הודעה 3

    CO_E_SERVER_EXEC_FAILURE (0x80080005): ביצוע השרת נכשל

    הודעה 4

    E_ACCESSDENIED (0x80070005): Access נדחה

  • בעת פתיחת מסמך של Office, אתה מקבל אחת מהודעות השגיאה הבאות.

    הודעה 1

    שגיאת זמן ריצה ' 5981 ' (0x800A175D): לא היתה אפשרות לפתוח את אחסון מאקרו

    הודעה 2

    שגיאת זמן ריצה ' 1004 ': פעולת השירות ' ~ ' של האובייקט ' ~ ' נכשלה

  • הפונקציה CreateObject והפונקציה CoCreateInstance מפסיקים להגיב ולעולם לא לסיים, או נמשכים זמן רב. בשרתים מסוימים, היצירה מהירה, אך שגיאות 1004 מופיעות ביומן האירועים של Windows המציין שהיישום הופסק.

  • פונקציות מסוימות נכשלות באופן בלתי צפוי או מפסיקות להגיב ללא הגבלת זמן בשל התראת משתמש או תיבת דו-שיח אחרת הדורשת תשומת לב של המשתמש.

  • הפעלת בקשות מרובות או בדיקות מתח גורמת לכשל בקוד, להפסיק להגיב או לקרוס ביצירה או בסיום של יישום Office. כאשר פעולה זו מתרחשת, התהליך נשאר מופעל בזיכרון ולא ניתן להפסיק אותו, או שכל המופעים של היישום האוטומטי נכשלים מנקודה זו.

ייתכן שבעיות או הודעות אחרות יופיעו בנוסף לאלה המפורטות כאן, אך בעיות אלה מתרחשות בדרך כלל כתוצאה מחמש הבעיות העיקריות המפורטות לעיל במאמר זה. 

חלופות לאוטומציה בצד השרת

Microsoft ממליצה בחום שמפתחים ימצאו חלופות לאוטומציה של Office אם הם צריכים לפתח פתרונות בצד השרת. בשל המגבלות לעיצוב של Office, שינויים בתצורת Office אינם מספיקים כדי לפתור את כל הבעיות. Microsoft ממליצה בחום על מספר חלופות שאינן מחייבות את Office להיות מותקן בצד השרת, ושיכולות לבצע את רוב המשימות הנפוצות בצורה יעילה ומהירה יותר מאוטומציה. לפני שתכלול את Office כרכיב בצד השרת בפרוייקט, שקול חלופות. רוב משימות האוטומציה בצד השרת כוללות יצירת מסמכים או עריכה. Office 2007 תומך בתבניות קובץ חדשות של Open XML המאפשרים למפתחים ליצור, לערוך, לקרוא ולהמיר תוכן קובץ בצד השרת. תבניות קובץ אלה משתמשות בטווח השמות של System.IO.Package.IO במסגרת Microsoft .net 3. x כדי לערוך קבצי office מבלי להשתמש ביישומי לקוח office עצמם. זוהי השיטה המומלצת והנתמכת לטיפול בשינויים בקבצי Office משירות. תבניות קובץ ה-Open של XML הן תקן ציבורי. 

Microsoft מספקת SDK לתמרון תבניות קובץ של XML פתוחות ממסגרת .NET 3. x framework. לקבלת מידע נוסף אודות ה-SDK וכיצד להשתמש ב-SDK כדי ליצור או לערוך קבצי XML פתוחים, בקר באתרי האינטרנט הבאים של Microsoft Developer Network (MSDN):

פתיחת התיעוד של SDK של XML

כיצד לבצע את הפעולות הבאות: לטפל במסמכים של תבניות Open XML

מניפולציה של קבצי Word 2007 באמצעות מודל האובייקט Open XML (חלק 1 מתוך 3)

מניפולציה של קבצי Word 2007 באמצעות מודל האובייקט Open XML (חלק 2 מתוך 3)

מניפולציה של קבצי Word 2007 באמצעות מודל האובייקט Open XML (חלק 3 מתוך 3)

שינוי קבצי Excel 2007 ו-PowerPoint 2007 באמצעות מודל האובייקט Open XML (חלק 1 מתוך 2)

שינוי קבצי Excel 2007 ו-PowerPoint 2007 באמצעות מודל האובייקט Open XML (חלק 2 מתוך 2)

בניית פתרונות של יצירת מסמכים בצד השרת באמצעות מודל האובייקט Open XML (חלק 1 מתוך 2)

בניית פתרונות של יצירת מסמכים בצד השרת באמצעות מודל האובייקט Open XML (חלק 2 מתוך 2)

כאשר אתה מזרים קבצי XML של Open מ-ASP או מ-ASP.NET, עליך לספק את הסוג הנכון של הרחבת הדואר האלקטרוני הרב של האינטרנט (MIME) עבור התוכן שאתה מזרים. לקבלת רשימה של סוגי MIME עבור קבצי Office 2007, בקר באתר האינטרנט הבא:

סוגי MIME בתבנית קובץ של Office 2007 עבור זרימת תוכן HTTP

אם אתה מייעד לקוחות מסוג pre-Office 2007 בלבד, ואינך מעוניין לדרוש את השימוש ב-XML Open בפתרון, באפשרותך להשתמש בתבניות קובץ אחרות של Office שאינן בינאריות, כגון HTML, XML ו-RTF. לאחר מכן, באפשרותך להזרים קבצים אלה ללקוח באמצעות סוג MIME כך שהטקסט שיתקבל יופיע ב-Office. ניתן לערוך את המסמך, לשמור אותו ואף להחזיר אותו לשרת באמצעות ASP בשרת. לקבלת מידע נוסף אודות נושאים אלה, ולקבלת דוגמאות המציגות כיצד ליישם אותן, לחץ על מספרי המאמרים הבאים כדי להציג את המאמרים במאגר הידע Microsoft Knowledge Base:

198703 כיצד להפוך את Excel מ-VBScript בצד הלקוח לזמין

278973 ExcelADO מדגים כיצד להשתמש ב-ADO כדי לקרוא ולכתוב נתונים בחוברות עבודה של Excel

286023 כיצד להשתמש ברכיב VB ActiveX עבור אוטומציה של Word מ-Internet Explorer  

אם העסק שלך דורש את היצירה בצד השרת של תבניות הקובץ הבינאריות של Office 97, Office 2000, Office XP ו-Office 2003, ספקים של ספקים חיצוניים מציעים רכיבים שיכולים לעזור לך. Microsoft אינה מספקת רכיבים כאלה, כך שיהיה עליך לבנות פתרון בעצמך או לרכוש מספק חיצוני. מוצרים רבים שונים של ספקים חיצוניים זמינים. עליך לחקור כל פתרון שמתאים ביותר לספק לצרכים העסקיים שלך.

אם ברצונך לבנות פתרון משלך שעורך את תבניות הקובץ הבינאריות של office 97, Office 2000, Office XP ו-Office 2003 באופן ישיר, באפשרותך להשיג את מפרטי תבנית הקובץ בחינם תחת תנאי ההבטחה של Microsoft Open מפרט (OSP). אין תמיכה טכנית זמינה עבור התיעוד או עבור המוצרים שאתה יוצר, אך התיעוד זמין. 

פתרונות בצד השרת עשויים גם לאפשר למשתמשים להעלות קבצים, ולאחר מכן להעניק לשרת לעבד את הקבצים לצורך הצגה באינטרנט או במדיומים אחרים. Microsoft פועלת כעת להציע תכונות מסוג זה, ומספקת גירסה מוקדמת של יכולת זו ב-Microsoft Excel Services. Excel Services הוא טכנולוגיית שרת חדשה הכלולה ב-Microsoft Office SharePoint Server 2007 ומאפשרת לך לטעון, לחשב ולהציג חוברות עבודה של Excel ב-Office SharePoint Server 2007. לקבלת מידע נוסף אודות Excel Services, בקר באתרי האינטרנט הבאים של Microsoft Developer Network (MSDN):

מבט כולל על Excel Services

הדרכה: פיתוח יישום מותאם אישית באמצעות Excel Web Services

יצירת יישומים עסקיים באמצעות תבניות Excel Services ו-Office Open XML שירותי אוטומציה של Word הם יישום שירות חדש ב-SharePoint Server 2010. שירותי אוטומציה של Word מספקים המרה בצד השרת ללא השגחה, המרת מסמכים לתבניות שנתמכות על-ידי יישום הלקוח של Microsoft Word.

מבט כולל על שירותי אוטומציה של Word

היכרות עם שירותי אוטומציה של Word עליך להעריך איזו מהאפשרויות המתוארות במאמר זה מתאימה לצרכיך וכיצד לפרוס את הפתרון. המידע המספק מאמר זה אינו מובטח לפתור את כל הבעיות עבור כל הלקוחות. אתה מומלץ לבדוק את הפתרון באופן יסודי לפני שתפרוס את הפתרון.

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft insider

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלכם?

תודה על המשוב!

×