אוטומציה של Excel נכשלת בפעם השניה הרצת הקוד

מאפייני הבעיה

בעת הפעלת קוד אשר משתמשת אוטומציה לפקד 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 או האובייקט חוברת עבודה של Excel. לאחר מכן ניתן להגדיר משתני אובייקטים אחרים כדי להפנות אל גליון עבודה, טווח או אובייקטים אחרים במודל האובייקטים של Microsoft Excel. בעת כתיבת קוד לשימוש אובייקט Excel, פעולת שירות או מאפיין, עליך תמיד להקדים את השיחה באמצעות משתנה האובייקט המתאים. אם לא תעשה זאת, Visual Basic יוצר משלו הפניה ל- Excel. הפניה זו עלול לגרום לבעיות כאשר אתה מנסה להפעיל את הקוד אוטומציה מספר פעמים. שים לב כי גם אם לשורת הקוד מתחיל עם משתנה האובייקט, שיחה עשויה להתבצע אובייקט של Excel, שיטה או מאפיין באמצע השורה של קוד שלהפניה לא משתנה אובייקט.

השלבים שלהלן מתארים כיצד לשחזר בעיה זו וכיצד לתקן את הבעיה.

שלבים לשחזור ההתנהגות

  1. התחלת פרוייקט EXE רגיל חדש ב- Visual Basic. טופס1 נוצרת כברירת מחדל.

  2. בתפריט פרוייקט , לחץ על הפניותולאחר מכן בדוק את ספריית אובייקטים עבור גירסת Excel שבכוונתך להפוך לאוטומטיות.

  3. ממקם פקד CommandButton טופס1.

  4. העתק את הקוד בדוגמה הבאה אל חלון הקוד של טופס1.

          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
  5. בתפריט הפעלה , לחץ על התחל, או הקש F5 כדי להפעיל את התוכנית.

  6. לחץ על הפקד CommandButton . לא תתרחש שגיאה. עם זאת, הפניה ל- Excel נוצר וגם לא שוחררה.

  7. לחץ על הפקד CommandButton שוב. שים לב כי תקבל אחת מהודעות השגיאה הנזכרים בסעיף "מאפייני הבעיה".

    הערה הודעת השגיאה מתרחשת מאחר שהקוד מתייחס לשיטה של התא ללא מקדים את השיחה עם
    משתנה אובייקט xlSheet .

  8. להפסיק את הפרוייקט ולשנות את שורת הקוד הבאה:

    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"

    שנה את שורת קוד באופן דומה את שורת הקוד הבאה.

    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
  9. הפעל את התוכנית שוב. שים לב שבאפשרותך להפעיל את הקוד פעמים מרובות מבלי לקבל הודעת שגיאה.

הפניות

לקבלת מידע נוסף, לחץ על מספרי המאמרים הבאים כדי להציגם במאגר הידע Microsoft Knowledge Base:

קובץ העזרה אוטומציה של Microsoft Office 97 167223 זמין

189618 אתה עשוי לקבל את הודעת השגיאה "שגיאת זמן ריצה '-2147023174' (800706ba)" או את "שגיאת זמן ריצה '462'" בעת הפעלת קוד Visual Basic אשר משתמשת אוטומציה לפקד Word

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

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

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

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

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×