סיכום
בעת שימוש באופרטור חדש או בפונקציה CreateObject ב- Microsoft Visual Basic כדי ליצור מופע של יישום Microsoft Office, ייתכן שתקבל את הודעת השגיאה הבאה:
שגיאת זמן ריצה '429': לרכיב ActiveX אין אפשרות ליצור אובייקט
שגיאה זו מתרחשת כאשר למודל האובייקטים של הרכיב (COM) אין אפשרות ליצור את אובייקט האוטומציה המבוקש, ולכן האובייקט אוטומציה אינו זמין ל- Visual Basic. שגיאה זו אינה מתרחשת בכל המחשבים.
מאמר זה מתאר כיצד לאבחן ולפתור בעיות נפוצות שעלולות לגרום לשגיאה זו.
מידע נוסף
ב- Visual Basic, קיימות כמה סיבות לשגיאה 429. השגיאה מתרחשת אם מתקיים אחד מהתנאים הבאים:
-
קיימת טעות ביישום.
-
אירעה טעות בתצורה של המערכת.
-
קיים רכיב חסר.
-
קיים רכיב פגום.
כדי למצוא את הגורם לשגיאה, בודד את הבעיה. אם אתה מקבל את הודעת השגיאה "429" במחשב לקוח, השתמש במידע הבא כדי לבודד ולפתור את השגיאה ביישומי Microsoft Office.
הערה ייתכן שחלק מהמידע הבא יחול גם על שרתי COM שאינם של Office. עם זאת, מאמר זה מבוסס על ההנחה שברצונך להפוך יישומי Office לאוטומטיים.
בדוק את הקוד
לפני שתפתור את הבעיה, נסה לבודד שורת קוד בודדת שעלולה לגרום לבעיה.
אם אתה מציין שייתכן שקוד בודד גורם לבעיה, בצע את ההליכים הבאים:
-
ודא שהקוד משתמש ביצירת אובייקטים מפורשת.
קל יותר לזהות בעיות אם הן מצטמצמות לפעולה בודדת. לדוגמה, חפש יצירת אובייקטים משתמעת המשמשת אחת מהאפשרויות הבאות.
דוגמת קוד 1Application.Documents.Add 'DON'T USE THIS!!
דוגמת קוד 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
שתי דוגמאות קוד אלה משתמשות ביצירת אובייקטים משתמעים. Microsoft Office Word 2003 אינו מופעל עד שהמשתנה נקרא לפחות פעם אחת. מאחר שניתן לקרוא למשתנה בחלקים שונים של התוכנית, ייתכן שיהיה קשה לאתר את הבעיה. ייתכן שיהיה קשה לאמת שהבעיה נגרמת בעת יצירת אובייקט היישום או בעת יצירת אובייקט המסמך .
במקום זאת, באפשרותך לבצע שיחות מפורשות כדי ליצור כל אובייקט בנפרד, באופן הבא.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
כאשר אתה מבצע שיחות מפורשות כדי ליצור כל אובייקט בנפרד, קל יותר לבודד את הבעיה. פעולה זו גם עשויה להקל על קריאת הקוד.
-
השתמש בפונקציה CreateObject במקום באופרטור חדש בעת יצירת מופע של יישום Office.
הפונקציה CreateObject ממפה באופן קרוב את תהליך היצירה שבו משתמשים רוב לקוחות Microsoft Visual C++. הפונקציה CreateObject גם מאפשרת שינויים ב- CLSID של השרת בין גירסאות. באפשרותך להשתמש בפונקציה CreateObject עם אובייקטים מאוגדים מוקדם ובאובייקטים מאוגדים באיחור. -
ודא שהמחרוזת "ProgID"
המועברת ל-CreateObject נכונה ולאחר מכן ודא שהמחרוזת "ProgID" אינה תלויה בגירסה. לדוגמה, השתמש במחרוזת "Excel.Application" במקום להשתמש במחרוזת "Excel.Application.8". ייתכן שלמערכת שאינה מצליחה יש גירסה קודמת של Microsoft Office או גירסה חדשה יותר של Microsoft Office מאשר הגירסה שציינת במחרוזת "ProgID". -
השתמש בפקודה Erl כדי לדווח על מספר השורה של שורת הקוד שלא הצליחה. פעולה זו עשויה לסייע לך לאתר באגים ביישומים שאינם יכולים לפעול ב- IDE. הקוד הבא מציין איזה אובייקט אוטומציה אין אפשרות ליצור (Microsoft Word או Microsoft Office Excel 2003):
Dim oWord As Word.Application Dim oExcel As Excel.Application On Error Goto err_handler 1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCritical
השתמש בפונקציה MsgBox ובמספר השורה כדי לעקוב אחר השגיאה.
-
השתמש באיגוד מאוחר באופן הבא:
Dim oWordApp As Object
אובייקטים מאוגדים מוקדם דורשים שהממשקים המותאמים אישית שלהם יהיו זמינים מעבר לגבולות התהליך. אם אין אפשרות לסדר את הממשק המותאם אישית במהלך CreateObject או במהלך חדש, תקבל את הודעת השגיאה "429". אובייקט מאוגד באיחור משתמש בממשק המוגדר על-ידי המערכת של IDispatch שאינו דורש אישור של Proxy מותאם אישית. השתמש באובייקט המאוגד באיחור כדי לוודא שהליך זה פועל כראוי.
אם הבעיה מתרחשת רק כאשר האובייקט מאוגד מוקדם, הבעיה היא ביישום השרת. בדרך כלל, באפשרותך להתקין מחדש את היישום כמתואר בסעיף "בדוק את שרת האוטומציה" במאמר זה כדי לפתור את הבעיה.
בחינת שרת האוטומציה
הסיבה הנפוצה ביותר להתרחשות של שגיאה בעת שימוש ב- CreateObject או ב-New היא בעיה שמשפיעה על יישום השרת. בדרך כלל, תצורת היישום או הגדרת היישום גורמת לבעיה. כדי לפתור בעיות, השתמש בשיטות הבאות:
-
ודא כי יישום Office שברצונך להפוך לאוטומטי מותקן במחשב המקומי. ודא שבאפשרותך להפעיל את היישום. לשם כך, לחץ על התחל,לחץ על
הפעל ולאחר מכן נסה להפעיל את היישום. אם אין באפשרותך להפעיל את היישום באופן ידני, היישום לא יפעל באמצעות אוטומציה. -
רשום מחדש את היישום באופן הבא:
-
לחץ על התחל ולאחר מכן לחץ על הפעל.
-
בתיבת הדו-שיח הפעלה, הקלד את הנתיב של השרת ולאחר מכן הוסף את /RegServer לסוף השורה.
-
לחץ על אישור.
היישום פועל באופן שקט. היישום נרשם מחדש כשרת COM.
אם הבעיה מתרחשת מכיוון שמפתח רישום חסר, שלבים אלה בדרך כלל לפתור את הבעיה.
-
-
בדוק את מפתח LocalServer32 תחת CLSID עבור היישום שברצונך להפוך לאוטומטי. ודא שמקש LocalServer32 מצביע על המיקום הנכון עבור היישום. ודא כי שם הנתיב הוא בתבנית נתיב קצר (DOS 8.3). אין צורך לרשום שרת באמצעות שם נתיב קצר. עם זאת, שמות נתיבים ארוכים הכוללים רווחים מוטבעים עלולים לגרום לבעיות במערכות מסוימות.
כדי לבדוק את מפתח הנתיב המאוחסן עבור השרת, הפעל את עורך הרישום של Windows, באופן הבא:-
לחץ על התחל ולאחר מכן לחץ על הפעל.
-
הקלד regedit ולאחר מכן לחץ על אישור.
-
מעבר אל HKEY_CLASSES_ROOT\CLSID המקשים.
מזהה ה- CLSD עבור שרתי האוטומציה הרשומים במערכת נמצאים תחת מפתח זה. -
השתמש בערכים הבאים של מפתח CLSID כדי למצוא את המפתח המייצג את יישום Office שברצונך להפוך לאוטומטי. בדוק את מפתח LocalServer32 של מפתח CLSID עבור הנתיב.
שרת Office
מפתח CLSID
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-00000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-00000000046}
-
בדוק את הנתיב כדי לוודא שהוא תואם למיקום הממשי של הקובץ.
הערה שמות נתיבים קצרים עשויים להיראות נכונים כאשר הם אינם נכונים. לדוגמה, הן Office והן Microsoft Internet Explorer (אם הם מותקנים במיקומים המהווים ברירת מחדל) כוללים נתיב קצר הדומה ל- C:\PROGRA~1\MICROS~X\ (כאשר
X הוא מספר). ייתכן תחילה תחילה שתרצה להוסיף שם זה לשם נתיב קצר.
כדי לקבוע אם הנתיב נכון, בצע את הפעולות הבאות:-
לחץ על התחל ולאחר מכן לחץ על הפעל.
-
העתק את הערך מהרישום ולאחר מכן הדבק את הערך בתיבת הדו-שיח הפעלה.
הערה הסר את בורר /automation לפני הפעלת היישום. -
לחץ על אישור.
-
ודא שהיישום פועל כראוי.
אם היישום פועל לאחר לחיצה על אישור, השרת רשום כראוי. אם היישום אינו פועל לאחר לחיצה על אישור, החלף את הערך של מפתח LocalServer32 בנתיב הנכון. השתמש בשם נתיב קצר אם ניתן.
-
-
בדוק אם קיימת פגם אפשרי בתבנית Normal.dot או בקובץ המשאבים של Excel.xlb. בעיות עלולות להתרחש כאשר אתה הופך את Microsoft Word או Microsoft Excel לאוטומטי אם התבנית Normal.dot ב- Word או קובץ המשאבים של Excel.xlb ב- Excel פגומים. כדי לבדוק קבצים אלה, חפש בדיסקים הקשיחים המקומיים את כל המופעים של Normal.dot או של Excel.xlb.
הערה ייתכן שתמצא עותקים מרובים של קבצים אלה. קיים עותק אחד של כל אחד מקבצים אלה עבור כל פרופיל משתמש המותקן במערכת.
שנה באופן זמני את שמות הקבצים Normal.dot או את קבצי Excel.xlb ולאחר מכן הפעל מחדש את בדיקת האוטומציה. הן Word והן Excel יוצרים קבצים אלה אם הם אינם יכולים למצוא אותם. ודא שהקוד פועל. אם הקוד פועל בעת יצירת קובץ Normal.dot חדש, מחק את הקבצים שאתה משנה את שמם. קבצים אלה פגומים. אם הקוד אינו פועל, עליך להחזיר קבצים אלה לשמות הקבצים המקוריים שלהם כדי לשמור הגדרות מותאמות אישית שנשמרות בקבצים אלה. -
הפעל את היישום תחת חשבון מנהל המערכת. שרתי Office דורשים גישת קריאה/כתיבה לרישום ולכונן הדיסקים. ייתכן שהשרתים של Office לא נטענים כראוי אם הגדרות האבטחה הנוכחיות שלך ימנעו גישת קריאה/כתיבה.
בדוק את המערכת
תצורת המערכת עשויה גם לגרום לבעיות ביצירת שרתי COM שלא בתהליך. כדי לפתור בעיות, השתמש בשיטות הבאות במערכת שבה מתרחשת השגיאה:
-
קבע אם הבעיה מתרחשת עם שרת מחוץ לתהליך. אם יש לך יישום המשתמש בשרת COM מסוים (כגון Word), בדוק שרת אחר שאינו נמצא בתהליך כדי לוודא שהבעיה אינה מתרחשת בשכבת ה- COM עצמה. אם אין באפשרותך ליצור שרת COM לא בתהליך במחשב, התקן מחדש את קבצי המערכת של OLE כמתואר בסעיף "התקנה מחדש של Microsoft Office" במאמר זה, או התקן מחדש את מערכת ההפעלה כדי לפתור את הבעיה.
-
בדוק את מספרי הגירסאות עבור קבצי מערכת OLE שמנהלים אוטומציה. קבצים אלה מותקנים בדרך כלל כערכה. קבצים אלה חייבים להתאים למספרי גירסאות Build. כלי שירות להתקנה שתצורתו נקבעה באופן שגוי יכול להתקין בטעות את הקבצים בנפרד. פעולה זו גורמת לאי-התאמה בין הקבצים. כדי להימנע מבעיות באוטומציה, בדוק את הקבצים כדי לוודא שהגירסאות ה- Build של הקבצים תואמות.
קבצי האוטומציה ממוקמים במדריך הכתובות של Windows\System32. בדוק את הקבצים הבאים.שם קובץ
גירסה
תאריך שינוי
Asycfilt.dll
10.0.16299.15
ה-29 בספטמבר 2017
Ole32.dll
10.0.16299.371
ה-29 במרץ 2018
Oleaut32.dll
10.0.16299.431
ה-3 במאי 2018
Olepro32.dll
10.0.16299.15
ה-29 בספטמבר 2017
סטדול2.tlb
3.0.5014
ה-29 בספטמבר 2017
כדי לבדוק את גירסת הקובץ, לחץ באמצעות לחצן העכבר הימני על הקובץ בסייר Windows ולאחר מכן לחץ על מאפיינים. שים לב לארבע הספרות האחרונות של גירסת הקובץ (מספר גירסת ה- Build) ובתאריך השינוי האחרון של הקובץ. ודא שערכים אלה זהים עבור כל קבצי האוטומציה.
הערה הקבצים הבאים מיועדים לגירסה Windows 10 1709, גירסת Build מס' 16299.431. מספרים ותאריכים אלה הם דוגמאות בלבד. הערכים שלך עשויים להיות שונים. -
השתמש בכלי השירות System Configuration (Msconfig.exe) כדי לבדוק את השירותים ואת אתחול המערכת עבור יישומים של ספקים חיצוניים שעשויים להגביל את ההפעלה של קוד ביישום Office
הערה הפוך את תוכנית האנטי-וירוס ללא זמינה באופן זמני רק במערכת בדיקה שאינו מחובר לרשת.
לחלופין, בצע שלבים אלה ב- Outlook כדי להפוך תוספות של ספקים חיצוניים ללא זמינות:
אם שיטה זו פותרת את הבעיה, פנה לספק האנטי-וירוס של הספק החיצוני לקבלת מידע נוסף אודות עדכון לתוכנית האנטי-וירוס.-
בתפריט קובץ, לחץ על אפשרויות ולאחר מכן לחץ על תוספות.
-
לחץ על נהל תוספות COM ולאחר מכן לחץ על ביצוע.
הערה תיבת הדו-שיח תוספות COM נפתחת. -
נקה את תיבת הסימון עבור תוספת כלשהי של ספק חיצוני ולאחר מכן לחץ על אישור.
-
הפעל מחדש את Outlook.
-
התקנה מחדש של Office
אם אף אחד מההליכים הקודמים לא פותר את הבעיה, הסר ולאחר מכן התקן מחדש את Office.
לקבלת מידע נוסף, עיין במאמר הבא של Office:
הורדה והתקנה או התקנה מחדש של Office 365 או Office 2016 במחשב PC או Mac
הפניות
לקבלת מידע נוסף אודות דוגמאות אוטומציה וקוד של Office, עבור אל אתר האינטרנט הבא של Microsoft: