Symptom

Om du automatiserar Microsoft Excel med Microsoft Visual Basic .NET, Microsoft Visual C# .NET eller Microsoft Visual C++, kan du få följande felmeddelande när du ringer vissa metoder:

Fel: 0x80028018 (-2147647512)Beskrivning: Gammalt format eller Bibliotek av ogiltig typ

Orsak

Du får det här felet när du anropar en Excel-metod när följande villkor uppfylls:

  • Metoden kräver en LCID-identifierare (locale identifier).

  • Du kör en engelsk version av Excel. De nationella inställningarna för datorn är dock konfigurerade för ett icke-engelskt språk.

Om klientdatorn kör den engelska versionen av Excel och språkinställningen för den aktuella användaren är konfigurerad för ett annat språk än engelska, försöker Excel hitta språkpaketet för det konfigurerade språket. Om språkpaketet inte hittas rapporteras felet.

Lösning

Du kan komma runt det här problemet genom att använda någon av följande metoder:

  • Installera User Interface Pack för flera språk för din version av Office.

  • Kör Excel-metoden eller egenskapen med InvokeMember så att du kan ange CultureInfo för samtalet. Följande kod visar till exempel hur du kan anropa arbetsboksobjektet Lägg till metod med "en-US" som 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)
  • Du kan också ange CultureInfo innan du anropar Excel-metoden. Till exempel:

    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
  • Skapa en 1033-katalog under Microsoft Office\Office11. Kopiera sedan excel.exe till 1033-katalogen och byt namn på den som xllex.dll. Om du vill ha mer information klickar du på följande länk:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

När du använder någon av de här lösningarna för en dator där de nationella inställningarna inte överensstämmer med den aktuella språkversionen av Office bör du känna till hur Excel fungerar och hur Excel tolkar data som kan vara formaterade för ett visst språk. Mer information om hur du skriver globaliserade Excel-lösningar med Visual Studio .NET finns i följande artiklar i MSDN:Creating Office Solutions for Use in Multiple Countries/Regions

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxGlobaliserings- och lokaliseringsproblem för lösningar som skapats med Microsoft Visual Studio Tools for the Microsoft Office System

http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Status

Microsoft har bekräftat att detta är ett fel i de Microsoft-produkter som listas i avsnittet "Gäller".

Mer information

Steg för att reproducera beteendet

  1. Kontrollera att språket för datorn är inställt på ett annat språk än engelska.För Windows 2000:

    1. Dubbelklicka på Nationella alternativ i Windows Kontrollpanelen.

    2. Välj en plats på fliken Allmänt och klicka sedan på OK.

    För Windows XP eller Windows Server 2003:

    1. Öppna Nationella inställningar och språkinställningar i Kontrollpanelen.

    2. Välj ett språk på fliken Nationella inställningar och klicka sedan på OK.

  2. Starta Microsoft Visual Studio .NET.

  3. Peka på Nytt på Arkiv-menyn och klicka sedan på Projicera. Klicka på Visual Basic-projekt under Projekttyper i dialogrutan Nytt projekt. Under Mallar klickar du på Windows-program och sedan på OK. Som standard skapas Formulär1.

  4. Klicka på Verktygslåda på Visa-menyn och lägg sedan till en knapp i Formulär1.

  5. Om du vill visa kodfönstret för formuläret dubbelklickar du på Knapp1.

  6. Ersätt följande kod i kodfönstret

    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _                          Handles Button1.ClickEnd Sub

    Med:

    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
  7. Lägg till följande rad i början av Formulär1-kodmodulen:

    Option Strict Off
  8. Tryck på F5 för att skapa och köra programmet.

  9. Om du vill generera felet klickar du på Knapp1. Felet uppstår på raden med texten:

    oDoc = oApp.Workbooks.Add

Referenser

Mer information om Office Automation finns på följande Microsoft Office Development-webbplats:

http://support.microsoft.com/ofd Se även följande Microsoft Knowledge Base-artiklar:

301982 Automatisera Microsoft Excel från Visual Basic .NET

302084 Automatisera Microsoft Excel från Microsoft Visual C# .NET

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.