Symptomer
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 feilen når du kaller en Excel-metode når følgende betingelser er oppfylt:
-
Metoden krever en LCID (identifikator for nasjonal innstilling).
-
Du kjører en engelsk versjon av Excel. De regionale innstillingene for datamaskinen er imidlertid konfigurert for et språk som ikke er engelsk.
Hvis klientdatamaskinen kjører den engelske versjonen av Excel og den nasjonale innstillingen for gjeldende bruker er konfigurert for et annet språk enn engelsk, prøver Excel å finne språkpakken for det konfigurerte språket. Hvis språkpakken ikke blir funnet, rapporteres feilen.
Omgå problemet
Hvis du vil omgå dette problemet, kan du bruke én av følgende metoder:
-
Installer Multilingual User Interface Pack for din versjon av Office.
-
Utfør Excel-metoden eller -egenskapen ved hjelp av InvokeMember, slik at du kan angi CultureInfo for kallet. Følgende kode illustrerer for eksempel hvordan du kan aktivere arbeidsbokobjektet Legg til-metoden 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 også angi CultureInfo før du kaller Excel-metoden. For eksempel:
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
-
Opprett en 1033-katalog under Microsoft Office\Office11. Deretter kopierer du excel.exe til 1033-katalogen og gir den et nytt navn som xllex.dll. Hvis du vil ha mer informasjon, klikker du følgende kobling:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Når du bruker en av disse løsningene for en datamaskin der de regionale innstillingene ikke samsvarer med gjeldende språkversjon av Office, bør du være kjent med hvordan Excel oppfører seg og hvordan Excel tolker data som kan være formatert for en bestemt nasjonal innstilling. Hvis du vil ha mer informasjon om hvordan du skriver globaliserte Excel-løsninger med Visual Studio .NET, kan du se følgende artikler i MSDN:Opprette Office-løsninger for bruk i flere land/områder
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxGlobaliserings- og lokaliseringsproblemer for løsninger opprettet med Microsoft Visual Studio Tools 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 Gjelder for.
Mer informasjon
Trinn for å gjenskape virkemåten
-
Kontroller at den nasjonale innstillingen for datamaskinen er satt til et annet språk enn engelsk.For Windows 2000:
-
Dobbeltklikk Regionale alternativer i Windows Kontrollpanel.
-
Velg en plassering på Generelt-fanen, og klikk deretter OK.
For Windows XP eller Windows Server 2003:
-
Åpne Innstillinger for region og språk i Kontrollpanel.
-
Velg en nasjonal innstilling på fanen Regionale innstillinger , og klikk deretter OK.
-
-
Start Microsoft Visual Studio .NET.
-
Pek på Ny på Fil-menyen, og klikk deretter Prosjekt. Klikk Visual Basic-prosjekter under Prosjekttyper i dialogboksen Nytt prosjekt. Klikk Windows-program under Maler, og klikk deretter OK. Skjema1 opprettes som standard.
-
Klikk Verktøykasse på Vis-menyen, og legg deretter til en knapp i Skjema1.
-
Dobbeltklikk Knapp1 for å vise kodevinduet for skjemaet.
-
Erstatt følgende kode i kodevinduet
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
-
Legg til følgende linje i begynnelsen av skjema1-kodemodulen:
Option Strict Off
-
Trykk F5 for å bygge og kjøre programmet.
-
Klikk Knapp1 for å generere feilen. Feilen oppstår på linjen der det står:
oDoc = oApp.Workbooks.Add
Referanser
Hvis du vil ha mer informasjon om Office-automatisering, kan du gå til følgende webområde for Microsoft Office Development:
http://support.microsoft.com/ofd Se i tillegg følgende Microsoft Knowledge Base-artikler:
301982 Slik automatiserer du Microsoft Excel fra Visual Basic .NET
302084 Slik automatiserer du Microsoft Excel fra Microsoft Visual C# .NET