FEIL: Feilmelding om gammelt format eller ugyldig typebibliotek ved automatisering av Excel

Artikkeloversettelser Artikkeloversettelser
Artikkel-ID: 320369 - Vis produkter som denne artikkelen gjelder for.
Vis alt | Skjul alt

På denne siden

Symptom

Hvis du automatiserer Microsoft Excel med Microsoft Visual Basic .NET, Microsoft Visual C# .NET eller Microsoft Visual C++, kan du få følgende feilmelding når du kaller bestemte metoder:
Feil: 0x80028018 (-2147647512)
Beskrivelse: Gammelt format eller ugyldig typebibliotek

Årsak

Du får denne feilmeldingen når du kaller en Excel-metode og følgende betingelser er oppfylt:
  • Metoden krever en LCID (identifikator for nasjonal innstilling).
  • Du kjører en engelskspråklig Excel-versjon, men de regionale innstillingene for datamaskinen er konfigurert for et annet språk.
Hvis du kjører en engelskspråklig Excel-versjon på klientdatamaskinen, men den nasjonale innstillingen som er angitt for gjeldende bruker, er konfigurert for et annet språk enn engelsk, vil Excel forsøke å finne frem til språkpakken for språket som er konfigurert. Hvis språkpakken ikke er å finne, blir feilen innrapportert.

Workaround

Du kan omgå dette problemet ved å bruke en av følgende metoder:
  • Installere MUI (Multilingual User Interface Pack) for din Office-versjon.
  • Kjøre Excel-metoden eller -egenskapen ved hjelp av InvokeMember, slik at du kan angi CultureInfo for kallet. Koden nedenfor illustrerer hvordan du kan aktivere metoden Add for Workbooks-objektet med en-US som CultureInfo:
    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)
    
  • Du kan eventuelt angi CultureInfo før du kaller Excel-metoden. Eksempel:
    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

Hvis du bruker en av disse midlertidige løsningene på en datamaskin med nasjonale innstillinger som ikke stemmer overens med gjeldende språkversjon for Office, bør du kjenne til hvordan Excel behandler og tolker data som kan formateres for et bestemt geografisk område. Hvis du vil vite mer om skriving av globaliserte Excel-løsninger med Visual Studio .NET, kan du se følgende artikler i MSDN:

Utvikle Office-løsninger for bruk i flere land/regioner
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
Globalisering- og lokaliseringsproblemer for løsninger som er utviklet med Microsoft Visual Studio-verktøy for Microsoft Office System
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Status

Microsoft har bekreftet at dette er en feil i Microsoft-produktene som er oppført i delen Informasjonen i denne artikkelen gjelder.

Mer informasjon

Fremgangsmåte for å gjenskape problemet

  1. Kontroller at engelsk ikke er valgt som nasjonal innstilling for datamaskinen.

    For Windows 2000:
    1. Dobbeltklikk Regionale innstillinger i Kontrollpanel i Windows.
    2. Gå til kategorien Generelt, velg et språk og klikk OK.
    For Windows XP og Windows Server 2003:
    1. Åpne Innstillinger for region og språk i Kontrollpanel.
    2. I kategorien Regionale innstillinger velger du en innstilling og klikker deretter OK.
  2. Start Microsoft Visual Studio .NET.
  3. Velg NewFile-menyen, og klikk deretter Project. Klikk Visual Basic Projects i dialogboksen New Project under Project types. Velg Windows Application under Templates, og klikk deretter OK. Som standard opprettes Form1.
  4. Velg ToolboxView-menyen og legg deretter til en knapp i Form1.
  5. Dobbeltklikk Button1 for å vise kodevinduet for skjemaet.
  6. Erstatt følgende kode i kodevinduet
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End 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 = Nothing
    End Sub
    					
  7. Legg til følgende linje i begynnelsen av kodemodulen Form1:
    Option Strict Off
  8. Trykk F5 for å bygge og kjøre programmet.
  9. Klikk Button1 for å generere feilen. Feilen oppstår i følgende linje:
    oDoc = oApp.Workbooks.Add
    					

Referanser

Hvis du vil ha mer informasjon om Office-automatisering, kan du gå til webområdet for Microsoft Office-utvikling:
http://support.microsoft.com/ofd
I tillegg kan du se følgende artikler i Microsoft Knowledge Base:
301982 Automatisere Microsoft Excel fra Visual Basic .NET (denne artikkelen kan være på engelsk)
302084 Automatisere Microsoft Excel fra Microsoft Visual C# .NET (denne artikkelen kan være på engelsk)

Egenskaper

Artikkel-ID: 320369 - Forrige gjennomgang: 23. november 2007 - Gjennomgang: 8.3
Informasjonen i denne artikkelen gjelder:
  • 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
Nøkkelord: 
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

Gi tilbakemelding

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com