HIBA: "Régi formátumú vagy érvénytelen típusú kódtár" hibaüzenet jelenik meg az Excel automatizálásakor

Tünetek

Ha automatizálja a Microsoft Excelt a Microsoft Visual Basic .NET, a Microsoft Visual C# .NET vagy a Microsoft Visual C++ használatával, bizonyos módszerek hívásakor az alábbi hibaüzenet jelenhet meg:

Megjegyzés

Hiba: 0x80028018 (-2147647512)
Leírás: Régi formátumú vagy érvénytelen típusú tárak

Ok

Ez a hibaüzenet az Excel-metódus meghívásakor a következő feltételek teljesülése esetén jelenik meg:

  • A metódushoz szükség van LCID-re (területi azonosítóra).

  • Az Excel angol nyelvű verzióját futtatja. A számítógép területi beállításai azonban nem angol nyelvhez vannak konfigurálva.

Ha az ügyfélszámítógépen az Excel angol nyelvű verziója fut, és az aktuális felhasználó területi beállítása nem angol, akkor az Excel megpróbálja megkeresni a beállított nyelv nyelvi csomagját. Ha a nyelvi csomag nem található, jelzi a hibát.

Kerülő megoldás

A problémát az alábbi módszerek egyikével kerülheti meg:

  • Telepítse az Office-verziójának megfelelő Multilingual User Interface Pack csomagot.

  • Hajtsa végre az Excel-metódust vagy -tulajdonságot az InvokeMember használatával, és adja meg a hívás CultureInfo értékét. A következő kód például bemutatja, hogyan hívhatja meg a Workbooks objektum Add metódusát az "en-US" kultúrainformációval:

    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim 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 tulajdonságot az Excel-metódus meghívása előtt. Például:

    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = _
        New System.Globalization.CultureInfo("en-US")
    oApp.Workbooks.Add()
    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
    
  • Hozzon létre egy 1033-as címtárat a Microsoft Office\Office11 mappában. Ezután másolja excel.exe az 1033 könyvtárba, és nevezze át xllex.dll-ra.

     További információért kattintson az alábbi hivatkozásra:
    http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Ha a fenti kerülő megoldások valamelyikét használja egy olyan számítógépen, amelynek területi beállításai nem egyeznek meg az Office aktuális nyelvi verziójával, tisztában kell lennie azzal, hogy az Excel hogyan viselkedik, és hogyan fogja értelmezni az adott területi beállításnak megfelelően formázott adatokat. A globalizált Excel-megoldások Visual Studio .NET segítségével történő írásáról további információt az MSDN következő cikkeiben talál:

Office-megoldások létrehozása több országban/régióban való használatra

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx A Microsoft Visual Studio Tools for the Microsoft Office System segítségével készített 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 olyan hiba a Microsoft-termékekben, amely az "Érintett szolgáltatás" részben van felsorolva.

További információ

A viselkedés reprodukálásának lépései

  1. Ellenőrizze, hogy a számítógép területi beállításai nem angolra vannak-e beállítva.

    Windows 2000 esetén:

    1. A Windows Vezérlőpult kattintson duplán a Területi beállítások ikonra.
    2. Az Általános lapon válasszon egy helyet, majd kattintson az OK gombra.

    Windows XP vagy Windows Server 2003 esetén:

    1. A Vezérlőpult nyissa meg a Területi és nyelvi beállításokat.
    2. A Területi beállítások lapon adja meg a területi beállítást, majd kattintson az OK gombra.
  2. Indítsa el a Microsoft Visual Studio .NET eszközt.

  3. Mutasson a Fájl menü Új pontjára, majd kattintson a Kivetítés parancsra. Az Új projekt párbeszédpanel Projekttípusok területén kattintson a Visual Basic projektek lehetőségre. A Sablonok csoportban kattintson a Windows-alkalmazás elemre, majd az OK gombra. Alapértelmezés szerint az Űrlap1 jön létre.

  4. A Nézet menüben kattintson az Eszközkészlet elemre, majd adjon hozzá egy gombot az Űrlap1 űrlaphoz.

  5. Az űrlap kódablakának megjelenítéséhez kattintson duplán az 1. gombra.

  6. 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.Click
    End Sub
    
    

    a következőkkel:

    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 = Nothing
    End Sub
    
    
  7. Adja hozzá a következő sort az Űrlap1 kódmodul elejéhez:

    Option Strict Off
    
  8. A program összeállításához és futtatásához nyomja le az F5 billentyűt.

  9. A hiba generálásához kattintson az 1. gombra. A hiba a következő sorban jelentkezik:

    oDoc = oApp.Workbooks.Add
    
    

Hivatkozások

Az Office automatizálásról a Microsoft Office fejlesztési webhelyein talál bővebb információt:

http://support.microsoft.com/ofd Emellett olvassa el a Microsoft Tudásbázis alábbi cikkeit is:

301982 Microsoft Excel automatizálása a Visual Basic .NET segítségével

302084 Microsoft Excel automatizálása Microsoft Visual C# .NET segítségével