Du arbetar offline, väntar på att återansluta till Internet

PROGRAMFEL: Felmeddelandet "Gammalt format eller ogiltigt typbibliotek" visas vid automatisering av Excel

Supporten för Office 2003 har upphört

Microsoft upphörde med supporten för Office 2003 den 8 april 2014. Denna ändring påverkar dina programuppdateringar och säkerhetsalternativ. Läs om vad detta innebär för dig och hur du behåller skyddet.

Symptom
Om du automatiserar Microsoft Excel med Microsoft Visual Basic .NET, Microsoft Visual C# .NET eller Microsoft Visual C++ kan följande felmeddelande visas när vissa metoder anropas:
Fel: 0x80028018 (-2147647512)
Beskrivning: Gammalt format eller ogiltigt typbibliotek
Orsak
Felmeddelandet visas när du anropar en Excel-metod och följande förutsättningar är uppfyllda:
  • Metoden kräver ett språk-ID (LCID).
  • Du använder en engelsk version av Excel, men datorns nationella inställningar är konfigurerade för ett annat språk än engelska.
Om den engelska Excel-versionen körs på klienten, och ett annat språk än engelska är konfigurerat för den aktuella användaren, söks språkpaketet för det konfigurerade språket. Om detta inte hittas rapporteras felet.
Workaround
Du kan undvika problemet på något av följande sätt:
  • Installera Multilingual User Interface Pack för din version av Office.
  • Kör Excel-metoden eller Excel-egenskapen med hjälp av InvokeMember så att du kan ange CultureInfo för anropet. Följande kod visar till exempel hur du kan anropa Workbooks-objektets Add-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 även ange CultureInfo innan du anropar Excel-metoden. Ett 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

När du använder någon av dessa lösningar för en dator där de nationella inställningarna inte motsvarar den aktuella språkversionen av Office, bör du känna till hur Excel fungerar och hur data som kan vara formaterade för ett visst språk tolkas i Excel. 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 Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System
Status
Microsoft har bekräftat att detta är ett programfel i Microsoft-produkterna som nämns i avsnittet "Gäller" i den här artikeln.
Mer Information

Åtgärder för att återskapa problemet

  1. Kontrollera att datorn är inställd på ett annat språk än engelska.

    Windows 2000:
    1. Dubbelklicka på Nationella inställningar på Kontrollpanelen.
    2. Välj ett språk på fliken Allmänt och klicka på OK.
    Windows XP och Windows Server 2003:
    1. Öppna Nationella inställningar och språkinställningar på Kontrollpanelen.
    2. Välj ett språk på fliken Nationella inställningar och klicka på OK.
  2. Starta Microsoft Visual Studio .NET.
  3. Peka på NewFile-menyn och klicka sedan på Project. I dialogrutan New Project, under Project Types, klickar du på Visual Basic Projects. Under Templates klickar du på Windows Application och sedan på OK. Form1 skapas som standard.
  4. View-menyn klickar du på Toolbox och lägger sedan till en knapp i Form1.
  5. Visa kodfönstret för formuläret genom att dubbelklicka på Button1.
  6. Byt ut koden
    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _                          Handles Button1.ClickEnd Sub					
    i kodfönstret mot
    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 kodmodulen Form1:
    Option Strict Off
  8. Skapa och kör programmet genom att trycka på F5.
  9. Generera felet genom att klicka på Button1. Felet uppstår på följande rad:
    oDoc = oApp.Workbooks.Add					
Referenser
Det finns mer information om Office Automation på följande Microsoft Office Development-webbplats: Se dessutom följande artiklar i Microsoft Knowledge Base:
301982 Automatisera Microsoft Excel från Visual Basic .NET (Länken kan leda till en webbplats som är helt eller delvis på engelska)
302084 Automatisera Microsoft Excel från Microsoft Visual C# .NET (Länken kan leda till en webbplats som är helt eller delvis på engelska)
XL2003 XL2007
Egenskaper

Artikel-id: 320369 – senaste granskning 11/23/2007 12:31:47 – revision: 8.3

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual C++ 6.1, Microsoft Visual J# .NET 2003 Standard Edition, Microsoft Visual Studio Tools for the Microsoft Office System version 2003

  • kbvs2002sp1sweep kbautomation kbbug kbpending KB320369
Feedback