תופעות
בעת הפעלת קוד Microsoft Visual Basic המשתמש באוטומציה כדי Word Microsoft, ייתכן שתקבל אחת מהודעות השגיאה הבאות:
הודעת שגיאה 1שגיאת זמן ריצה '-2147023174' (800706ba)
שגיאת אוטומציההודעת שגיאה 2
שגיאת זמן ריצה '462': מחשב השרת המרוחק אינו קיים או אינו זמין
סיבה
Visual Basic קבע הפניה ל- Word עקב שורת קוד שגורמת לקריאות לאובייקט, לפעולת שירות או למאפיין של Word מבלי לעמוד בדרישות שלהם עם משתנה אובייקט Word אחר. Visual Basic אינו מפיץ הפניה זו עד סיום התוכנית. הפניה לא מתאימות זו מפריעה לקוד אוטומציה כאשר הקוד מופעל יותר מפעם אחת.
פתרון
שנה את הקוד כך שכל קריאה לאובייקט, לפעולת Word או למאפיין עומדים בדרישות עם משתנה האובייקט המתאים.
מצב
אופן פעולה זה תם.
מידע נוסף
כדי להפוך Word לאוטומטית, עליך ליצור משתנה אובייקט שבדרך כלל מפנה לאובייקט Word יישום או מסמך. לאחר מכן ניתן להגדיר משתני אובייקטים אחרים כך שיפנות לבחירה, לטווח או לאובייקטים אחרים במודל Word האובייקטים. בעת כתיבת קוד כדי להשתמש Word אובייקט, פעולת שירות או מאפיין, עליך תמיד להקדים את השיחה עם משתנה האובייקט המתאים. אם לא תעשה זאת, Visual Basic ישתמש בהפניה מוסתרת של משתנה כללי שהיא מגדירה למופע הפועל כעת. אם Word נסגר, או אם משתנה האובייקט שהוצהר מופץ, המשתנה הכללי המוסתר יפנה כעת לאובייקט לא חוקי (נהרס). בעת הפעלת קוד האוטומציה שוב, קריאות למשתנה אובייקט מוסתר זה ייכשלו עם השגיאה הנ"ל.
השלבים הבאים ממחישים כיצד לשחזר בעיה זו וכיצד לפתור אותה.שלבים לשכפול אופן פעולה
-
התחל פרוייקט חדש של Standard EXE ב- Visual Basic. Form1 נוצר כברירת מחדל.
-
לחץ על הפניות בתפריט פרוייקט ולאחר מכן לחץ על אחת מהאפשרויות הבאות:
-
עבור Office Word 2007, לחץ על Microsoft Word 12.0 Object Library
-
עבור Word 2003, לחץ על Microsoft Word 11.0 Object Library
-
עבור Word 2003, לחץ על Microsoft Word 10.0 Object Library
-
עבור Word 2000, לחץ על Microsoft Word 9.0 Object Library.
-
עבור Word 97, לחץ על Microsoft Word 8.0 Object Library.
-
-
מקם CommandButton בטופס1.
-
העתק את הקוד הבא לחלון הקוד של Form1:
Option Explicit Private Sub Command1_Click() Dim oWord As Word.Application Dim oDoc As Word.Document Dim oRange as Word.Range Set oWord = CreateObject("Word.Application") With oWord .Visible = True .Activate .WindowState = wdWindowStateNormal End With Set oDoc = oWord.Documents.Add MsgBox "Document open", vbMsgBoxSetForeground With oDoc .PageSetup.LeftMargin = InchesToPoints(1.25) End With ' This example inserts text at the end of section one. Set oRange = ActiveDocument.Sections(1).Range With oRange .MoveEnd Unit:=wdCharacter, Count:= -1 .Collapse Direction:=wdCollapseEnd .InsertParagraphAfter .InsertAfter "End of section." End With With oDoc .Saved = True End With Set oRange = Nothing Set oDoc = Nothing oWord.Quit Set oWord = Nothing End Sub
-
בתפריט הפעלה, לחץ על התחל או הקש על מקש F5 כדי להפעיל את התוכנית.
-
לחץ על לחצן הפקודה. לא מתרחשת שגיאה. עם זאת, הפניה Word נוצרה ולא הופצה.
-
לחץ שוב על CommandButton ורשום שאתה מקבל את השגיאה המתוארת קודם לכן.
הערה השגיאה מתרחשת מאחר שהקוד מפנה לפעולת השירות InchesToPoints מבלי להוסיף לפני השיחה את משתנה האובייקט oWord. -
הפסק את הפרוייקט ושנה את השורה הבאה:
.PageSetup.LeftMargin = InchesToPoints(1.25)
-ל-
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
הפעל שוב את התוכנית. לאחר מכן, לחץ על לחצן הפקודה. לא מתרחשת שגיאה.
-
לחץ שוב על CommandButton ורשום שאתה מקבל את השגיאה.
הערה השגיאה מתרחשת מאחר שהקוד מפנה לאובייקט Range של מקטע ActiveDocument אחד מבלי להוסיף לפני השיחה את משתנה האובייקט oWord. -
הפסק את הפרוייקט ושנה את השורה הבאה:
Set oRange = ActiveDocument.Sections(1).Range
-ל-
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
הפעל שוב את התוכנית. שים לב שבאפשרותך להפעיל את הקוד כמה פעמים ללא שגיאה.
בעת בניית פרוייקט Visual Basic ההפיכת Word לאוטומטי, אם הפרוייקט שלך כולל הפניה לספריית האובייקטים של Microsoft Word, קוד לדוגמה עבור האובייקטים, פעולות השירות והמאפיינים של מודל האובייקטים של Word זמין בקובץ העזרה של Word. כאשר הסמן נמצא מעל מילה עיקרית בקוד שלך, תראה את כל טקסט העזרה הרלוונטי על-ידי הקשה על מקש F1.
הקוד לדוגמה בנושא העזרה יהיה קוד Microsoft Word Visual Basic for Applications. הוא לא יציג את ההפניות לאובייקטים שקוד Visual Basic שלך דורש. יהיה עליך להוסיף את מזהי בהתאם לצורך.הפניות
לקבלת מידע נוסף, עיין במאמרים הבאים במאגר הידע של Microsoft:
178510 PRB: פעולת השירות לאוטומציה של Excel עבור האובייקט '_Global'נכשלה
לקבלת מידע נוסף אודות אוטומציה של יישומי Office, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base: