תופעות
אם אתה הופך את Microsoft Excel לאוטומטי באמצעות Microsoft Visual Basic .NET, Microsoft Visual C# .NET או Microsoft Visual C++, ייתכן שתקבל את השגיאה הבאה בעת קריאה לשיטות מסוימות:
שגיאה: 0x80028018 (-2147647512)תיאור: תבנית ישנה או ספריית סוגים לא חוקית
סיבה
אתה מקבל שגיאה זו בעת קריאה לפעולת שירות של Excel כאשר מתקיימים התנאים הבאים:
-
פעולת השירות דורשת LCID (מזהה אזור).
-
אתה מפעיל גירסה באנגלית של Excel. עם זאת, ההגדרות האזוריות עבור המחשב מוגדרות עבור שפה שאינה אנגלית.
אם מחשב הלקוח מפעיל את הגירסה האנגלית של Excel והמיקום עבור המשתמש הנוכחי מוגדר עבור שפה שאינה אנגלית, Excel ינסה לאתר את ערכת השפה עבור השפה שתצורתה נקבעה. אם ערכת השפה לא נמצאה, השגיאה מדווחת.
פתרון
כדי לעקוף בעיה זו, באפשרותך להשתמש באחת מהשיטות הבאות:
-
התקן את ערכת ממשק המשתמש הרב-לשונית עבור גירסת Office שברשותך.
-
בצע את פעולת השירות או המאפיין של Excel באמצעות InvokeMember כדי שתוכל לציין את CultureInfo עבור השיחה. לדוגמה, הקוד הבא מדגים כיצד ניתן להפעיל את פעולת השירות Add של אובייקט Workbooks עם "en-US" כ- CultureInfo:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
-
לחלופין, הגדר את CultureInfo לפני ביצוע קריאה לפעולת השירות של Excel. לדוגמה:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _ System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _ New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
-
צור מדריך כתובות של 1033 תחת Microsoft Office\Office11. לאחר מכן, excel.exe את הספריה 1033 ושנה את שמה xllex.dll. לקבלת מידע נוסף, לחץ על הקישור הבא:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
בעת שימוש באחד מפתרונות אלה עבור מחשב שבו ההגדרות האזוריות אינן תואמות לגירסת השפה הנוכחית של Office, עליך להכיר את אופן הפעולה של Excel וכיצד Excel יפרש נתונים שעשויים להיות מעוצבים עבור אזור ספציפי. לקבלת פרטים נוספים אודות כתיבת פתרונות כלליים של Excel באמצעות Visual Studio .NET, עיין במאמרים הבאים ב- MSDN:יצירת פתרונות Office לשימוש במדינות/אזורים מרובים
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxבעיות גלובליות והתאמה לשפות אחרות עבור פתרונות שנוצרו באמצעות Microsoft Visual Studio Tools for the Microsoft Office System
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
מצב
Microsoft אישרה שזהו באג במוצרי Microsoft המפורטים בסעיף "חל על".
מידע נוסף
שלבים לשכפול אופן הפעולה
-
ודא כי האזור עבור המחשב מוגדר לשפה שאינה אנגלית.עבור Windows 2000:
-
ב- Windows לוח הבקרה, לחץ פעמיים על אפשרויות אזוריות.
-
בכרטיסיה כללי, בחר מיקום ולאחר מכן לחץ על אישור.
עבור Windows XP או Windows Server 2003:
-
בתיבת לוח הבקרה, פתח את אפשרויות אזור ושפה.
-
בכרטיסיה אפשרויות אזוריות , בחר אזור ולאחר מכן לחץ על אישור.
-
-
הפעל את Microsoft Visual Studio .NET.
-
בתפריט קובץ, הצבע על חדש ולאחר מכן לחץ על Project. בתיבת הדו-שיח פרוייקט חדש, תחת סוגי פרוייקטים, לחץ על פרוייקטים של Visual Basic. תחת תבניות, לחץ על יישום Windows ולאחר מכן לחץ על אישור. כברירת מחדל, Form1 נוצר.
-
בתפריט תצוגה, לחץ על ארגז כלים ולאחר מכן הוסף לחצן לטופס1.
-
כדי להציג את חלון הקוד עבור הטופס, לחץ פעמיים על לחצן1.
-
בחלון הקוד, החלף את הקוד הבא
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
עם:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oApp As Object Dim oDoc As Object oApp = CreateObject("Excel.Application") oApp.Visible = True oDoc = oApp.Workbooks.Add oDoc.Close() oApp.Quit() oDoc = Nothing oApp = NothingEnd Sub
-
הוסף את השורה הבאה לתחילת מודול קוד Form1:
Option Strict Off
-
הקש F5 כדי לבנות ולהפעיל את התוכנית.
-
כדי ליצור את השגיאה, לחץ על לחצן1. השגיאה מתרחשת בשורה המוקראת:
oDoc = oApp.Workbooks.Add
הפניות
לקבלת מידע נוסף אודות אוטומציה של Office, בקר באתר האינטרנט הבא של פיתוח Microsoft Office:
http://support.microsoft.com/ofd בנוסף, עיין במאמרי מאגר הידע הבאים של Microsoft:
301982 כיצד להפוך את Microsoft Excel לאוטומטי מ- Visual Basic .NET
302084 כיצד להפוך את Microsoft Excel לאוטומטי מ- Microsoft Visual C# .NET