Jelenségek
Ha automatizálja a Microsoft Excelt a Microsoft Visual Basic .NET, a Microsoft Visual C# .NET vagy a Microsoft Visual C++ használatával, a következő hibaüzenet jelenhet meg bizonyos metódusok meghívásakor:
Hiba: 0x80028018 (-2147647512)Leírás: Régi formátum vagy érvénytelen típustár
A probléma oka
Ez a hibaüzenet akkor jelenik meg, ha a következő feltételek teljesülnek:
-
A metódushoz LCID (területi azonosító) szükséges.
-
Az Excel angol nyelvű verzióját futtatja. A számítógép területi beállításai azonban nem angol nyelvűre vannak konfigurálva.
Ha az ügyfélszámítógép az Excel angol verzióját futtatja, és az aktuális felhasználó területi beállítása az angoltól eltérő nyelvre van konfigurálva, az Excel megpróbálja megkeresni a beállított nyelv nyelvi csomagját. Ha a nyelvi csomag nem található, a rendszer jelenti a hibát.
Kerülő megoldás
A probléma kerülő megoldásához használja az alábbi módszerek egyikét:
-
Telepítse a többnyelvű felhasználói felületi csomagot az Ön Office-verziójához.
-
Hajtsa végre az Excel metódust vagy tulajdonságot az InvokeMember használatával, hogy meg tudja adni a hívás CultureInfo elemét. Az alábbi kód például azt mutatja be, hogyan hívhatja meg a Workbooks objektum Add metódusát az "en-US" használatával CultureInfo néven:
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)
-
Vagy állítsa be a CultureInfo értéket az Excel metódus meghívása előtt. Például:
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
-
Hozzon létre egy 1033-címtárat a Microsoft Office\Office11 alatt. Ezután másolja excel.exe az 1033-as könyvtárba, és nevezze át xllex.dll. További információért kattintson a következő hivatkozásra:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Ha ezen áthidaló megoldások egyikét használja olyan számítógépen, amelyen a területi beállítások nem felelnek meg az Office aktuális nyelvi verziójának, ismernie kell az Excel viselkedését, és hogy az Excel hogyan értelmezi az adott területi beállításhoz formázott adatokat. A globalizált Excel-megoldások Visual Studio .NET-tel való megírásáról további információt az MSDN:Office-megoldások létrehozása több országban/régióban való használatra című cikkben talál.
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxA Microsoft Visual Studio Tools for the Microsoft Office System létrehozott megoldások globalizációs és honosítási problémái
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
Állapot
A Microsoft megerősítette, hogy ez egy hiba a "Hatókör" szakaszban felsorolt Microsoft-termékekben.
További információ
A viselkedés reprodukálásának lépései
-
Ellenőrizze, hogy a számítógép területi beállítása az angoltól eltérő nyelvre van-e beállítva.Windows 2000 esetén:
-
A Windows Vezérlőpult kattintson duplán a Területi beállítások elemre.
-
Az Általános lapon válasszon ki egy helyet, majd kattintson az OK gombra.
Windows XP vagy Windows Server 2003 esetén:
-
A Vezérlőpult nyissa meg a Területi és nyelvi beállítások elemet.
-
A Területi beállítások lapon válasszon egy területi beállítást, majd kattintson az OK gombra.
-
-
Indítsa el a Microsoft Visual Studio .NET-et.
-
A Fájl menüben mutasson az Új elemre, majd kattintson a Project elemre. Az Új projekt párbeszédpanel Projekttípusok területén kattintson a Visual Basic Projects elemre. A Sablonok területen kattintson a Windows-alkalmazás, majd az OK gombra. Alapértelmezés szerint az 1. űrlap jön létre.
-
A Nézet menüben kattintson az Eszközkészlet elemre, majd adjon hozzá egy gombot a Form1 űrlaphoz.
-
Az űrlap kódablakának megjelenítéséhez kattintson duplán a Button1 gombra.
-
A kódablakban cserélje le a következő kódot
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
a következővel:
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
-
Adja hozzá a következő sort a Form1 kódmodul elejéhez:
Option Strict Off
-
A program létrehozásához és futtatásához nyomja le az F5 billentyűt.
-
A hiba létrehozásához kattintson a Button1 gombra. A hiba az alábbi sorban jelenik meg:
oDoc = oApp.Workbooks.Add
Hivatkozások
Az Office Automationnel kapcsolatos további információkért látogasson el a Microsoft Office-fejlesztés webhelyére:
http://support.microsoft.com/ofd Emellett tekintse meg a Microsoft Tudásbázis következő cikkeit:
301982 A Microsoft Excel automatizálása a Visual Basic .NET-ből
302084 A Microsoft Excel automatizálása a Microsoft Visual C# .NET-ből