Chyba: "starý formát nebo neplatný typ knihovny" Chyba automatizace aplikace Excel

Příznaky

K automatizaci aplikace Microsoft Excel pomocí aplikace Microsoft Visual Basic .NET, Microsoft Visual C# .NET nebo Microsoft Visual C++, se může zobrazit následující chybová zpráva při volání některé metody:
Chyba: 0x80028018 (-2147647512)
Popis: Starý formát nebo neplatný typ knihovny

Příčina

Této chybě volání metody aplikace Excel, pokud jsou splněny následující podmínky:
  • Metoda vyžaduje LCID (locale identifier).
  • Můžete spustit anglickou verzi aplikace Excel. Však místní nastavení počítače jsou konfigurovány pro neanglické jazykové.
Pokud klientský počítač spustí anglickou verzi aplikace Excel a národní prostředí aktuálního uživatele je nakonfigurována pro jiný jazyk než angličtinu, aplikace Excel se pokusí vyhledat jazyková sada pro nakonfigurovaný jazyk. Pokud není nalezena jazyková sada, je hlášena chyba.

Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:
  • Nainstalujte sadu Multilingual User Interface Pack pro vaši verzi sady Office.
  • Spuštění aplikace Excel, metodu nebo vlastnost pomocí metodu InvokeMember , takže můžete určit CultureInfo pro volání. Například následující kód ukazuje, jak lze vyvolat metodu Add s "en US" jako CultureInfoobjekt sešity :
    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)

  • Nebo nastavit CultureInfo před voláním metody aplikace Excel. Například:
    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
  • Vytvořte adresář 1033 pod Microsoft Office\Office11. Potom zkopírujte do adresáře 1033 excel.exe a přejmenujte jej jako xllex.dll.

    Další informace naleznete klepnutím na následující odkaz:
    http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Pokud používáte jedno z těchto řešení pro počítač, kde regionální nastavení neodpovídá aktuální jazykovou verzi sady Office, je třeba znát chování aplikace Excel a aplikace Excel budou jak interpretovat data, která mohou být formátovány pro specifické národní prostředí. Další informace o psaní globalizovaná aplikace Excel řešení pomocí aplikace Visual Studio .NET naleznete v následujících článcích v MSDN:

Vytváření řešení sady Office pro použití ve více zemíchGlobalizace a lokalizace pro řešení vytvořené pomocí sada Microsoft Visual Studio Tools for the Microsoft Office System

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části "Platí pro".

Další informace

Kroky pro reprodukci chování

  1. Ověřte, zda národní prostředí v počítači je nastaven na jiný jazyk než angličtinu.

    V systému Windows 2000:
    1. V Ovládacích panelech poklepejte na panel Místní nastavení.
    2. Na kartě Obecné vyberte umístění a klepněte na tlačítko OK.
    Systém Windows XP nebo Windows Server 2003:
    1. V Ovládacích panelech otevřete místní a jazykové nastavení.
    2. Na kartě Místní nastavení vyberte národní prostředí a potom klepněte na tlačítko OK.
  2. Spusťte aplikaci Visual Studio .NET.
  3. V nabídce soubor přejděte na příkaz Nový a klepněte na příkaz projekt. V dialogovém okně Nový projekt v části Typy projektů, klepněte na tlačítko Projekty jazyka Visual Basic. Ve skupinovém rámečku šablonyklepněte na tlačítko Aplikace systému Windowsa potom klepněte na tlačítko OK. Ve výchozím nastavení je vytvořen formulář Form1.
  4. V nabídce Zobrazit klepněte na panelu nástrojůa pak přidejte tlačítko do formuláře Form1.
  5. Chcete-li zobrazit okno kód pro formulář, poklepejte na Button1.
  6. V okně kódu nahraďte následující kód
    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _
    Handles Button1.Click
    End Sub

    s:
    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. Na začátek modulu kódu Form1 přidejte následující řádek:
    Option Strict Off
  8. Stisknutím klávesy F5 sestavit a spustit program.
  9. Chcete-li generovat chybu, klepněte na tlačítko Button1. Dojde k chybě na řádku přečte:
    oDoc = oApp.Workbooks.Add

Odkazy

Další informace o automatizaci systému Office naleznete na následujícím webu Microsoft Office Development:Navíc získáte v následujících článcích znalostní báze Microsoft Knowledge Base:
301982 jak automatizovat aplikaci Microsoft Excel z Visual Basic .NET

302084 jak automatizovat aplikaci Microsoft Excel pomocí jazyka Microsoft Visual C# .NET

Vlastnosti

ID článku: 320369 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor