תופעות
בעת הפעלת קוד המשתמש באוטומציה כדי לשלוט ב- Microsoft Excel, עשויה להתרחש אחת מהשגיאות הבאות:
ב- Microsoft Excel 97 ובגרסאות מאוחרות יותר של Excel, תקבל אחת מההודעות הבאות:
הודעת שגיאה 1
שגיאת זמן ריצה '1004':
פעולת השירות '<שם פעולת השירות>' של האובייקט '_Global' נכשלה
הודעת שגיאה 2
שגיאה המוגדרת על-ידי היישום או מוגדרת על-ידי האובייקט
ב- Microsoft Excel 95, תקבל אחת מהודעות השגיאה הבאות:
הודעת שגיאה 1
שגיאת זמן ריצה '-2147023174'
שגיאת אוטומציה של OLE
הודעת שגיאה 2
שגיאת זמן ריצה '462':
מחשב השרת המרוחק אינו קיים או אינו זמין.
סיבה
Visual Basic ביסס הפניה ל- Excel עקב שורת קוד הקריאות לאובייקט, לפעולת שירות או למאפיין של Excel מבלי לאשר את הרכיב עם משתנה אובייקט של Excel. Visual Basic אינו מפיץ הפניה זו עד סיום התוכנית. הפניה לא מתאימות זו מפריעה לקוד אוטומציה כאשר הקוד מופעל יותר מפעם אחת.
פתרון
כדי לפתור בעיה זו, שנה את הקוד כך שכל קריאה לאובייקט, לפעולת שירות או למאפיין של Excel תותאם למשתנה האובייקט המתאים.
מצב
אופן פעולה זה תם.
מידע נוסף
כדי להפוך את Microsoft Excel לאוטומטי, עליך ליצור משתנה אובייקט שבדרך כלל מפנה לאובייקט Excel Application או לאובייקט Excel Workbook. לאחר מכן ניתן להגדיר משתני אובייקטים אחרים כך שיפנות לגליון עבודה, לטווח או לאובייקטים אחרים במודל האובייקטים של Microsoft Excel. בעת כתיבת קוד כדי להשתמש באובייקט, בפעולת שירות או במאפיין של Excel, עליך תמיד להוסיף לפני השיחה את משתנה האובייקט המתאים. אם לא תעשה זאת, Visual Basic יבסס הפניה משלו ל- Excel. הפניה זו עלולה לגרום לבעיות כאשר אתה מנסה להפעיל את קוד האוטומציה כמה פעמים. שים לב, גם אם שורת הקוד מתחילה במשתנה האובייקט, ייתכן ששיחה תתווסף לאובייקט, לפעולת שירות או למאפיין של Excel באמצע שורת הקוד שלא מופיע לפניו משתנה אובייקט.
השלבים הבאים ממחישים כיצד לשחזר בעיה זו וכיצד לפתור את הבעיה.
שלבים לשכפול אופן הפעולה
-
התחל פרוייקט חדש של Standard EXE ב- Visual Basic. Form1 נוצר כברירת מחדל.
-
בתפריט פרוייקט , לחץ על הפניות ולאחר מכן בדוק את גירסת Excel שבכוונתך להפוך לאוטומטית.
-
מקם פקד CommandButton בטופס1.
-
העתק את דוגמת הקוד הבאה לחלון הקוד של Form1.
Option Explicit Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello" xlBook.Saved = True Set xlSheet = Nothing Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End Sub
-
בתפריט הפעלה, לחץ על התחל או הקש F5 כדי להפעיל את התוכנית.
-
לחץ על הפקד CommandButton . לא מתרחשת שגיאה. עם זאת, הפניה ל- Excel נוצרה ולא הופצה.
-
לחץ שוב על פקד CommandButton . שים לב שאתה מקבל אחת מהודעות השגיאה המפורטות בסעיף "מאפייני הבעיה".
הערה הודעת השגיאה מתרחשת מאחר שהקוד מפנה לפעולת השירות של התא מבלי להוסיף לפני השיחה את
משתנה אובייקט xlSheet. -
הפסק את הפרוייקט ושנה את שורת הקוד הבאה:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
שנה את שורת הקוד כך שדומה לקוד הבא.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
הפעל שוב את התוכנית. שים לב שבאפשרותך להפעיל את הקוד כמה פעמים מבלי לקבל הודעת שגיאה.
הפניות
189618 ייתכן שתקבל את הודעת השגיאה "שגיאת זמן ריצה '-2147023174' (800706ba)" או את הודעת השגיאה "שגיאת זמן ריצה '462'" בעת הפעלת קוד Visual Basic המשתמש באוטומציה כדי לשלוט Word