Oireet
Jos automatisoit Microsoft Excelin Microsoft Visual Basic .NET:n, Microsoft Visual C# .NET:n tai Microsoft Visual C++:n avulla, saatat saada seuraavan virhesanoman tiettyjä menetelmiä kutsuttaessa:
Virhe: 0x80028018 (-2147647512)Kuvaus: Vanha muotoilu tai virheellinen tyyppikirjasto
Syy
Saat tämän virheen kutsuessasi Excel-menetelmää, kun seuraavat ehdot täyttyvät:
-
Menetelmä edellyttää LCID-tunnistetta (aluekohtaista tunnistetta).
-
Käytössäsi on Excelin englanninkielinen versio. Tietokoneen aluekohtaiset asetukset on kuitenkin määritetty kielelle, joka ei ole englanninkielinen.
Jos asiakastietokoneessa on Käytössä Excelin englanninkielinen versio ja nykyisen käyttäjän kieliasetus on määritetty muulle kielelle kuin englannille, Excel yrittää etsiä määritetyn kielen kielipaketin. Jos kielipakettia ei löydy, virhe ilmoitetaan.
Vaihtoehtoinen menetelmä
Voit kiertää ongelman jollakin seuraavista tavoista:
-
Asenna Office-versiollesi monikielinen käyttöliittymäpaketti.
-
Suorita Excel-menetelmä tai -ominaisuus käyttämällä InvokeMember-funktiota, jotta voit määrittää puhelun CultureInfo-arvon. Esimerkiksi seuraava koodi havainnollistaa, miten voit käynnistää Työkirjat-objektin Lisää-menetelmän, jonka "en-US" on 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)
-
Voit myös määrittää CultureInfo-asetuksen ennen Excel-menetelmän kutsumista. Esimerkki:
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
-
Luo 1033-hakemisto kohdassa Microsoft Office\Office11. Kopioi sitten excel.exe 1033-hakemistoon ja nimeä se uudelleen xllex.dll. Saat lisätietoja napsauttamalla seuraavaa linkkiä:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Kun käytät jotakin näistä vaihtoehtoisista menetelmiä tietokoneessa, jossa aluekohtaiset asetukset eivät vastaa Officen nykyistä kieliversiota, sinun pitäisi tietää, miten Excel toimii ja miten Excel tulkitsee tietoja, jotka voidaan muotoilla tietylle kielialueelle. Lisätietoja globalisoitujen Excel-ratkaisujen kirjoittamisesta Visual Studio .NET:n avulla on seuraavissa MSDN-artikkeleissa: Office-ratkaisujen luominen käytettäväksi useissa maissa ja useilla alueilla
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxVSTO luotujen ratkaisujen globalisointi- ja lokalisointiongelmat
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
Tila
Microsoft on vahvistanut, että tämä on virhe Microsoft-tuotteissa, jotka on lueteltu "Koskee seuraavia" -osiossa.
Lisätietoja
Toimintatavan toistamisen vaiheet
-
Varmista, että tietokoneen kieliasetukseksi on määritetty jokin muu kieli kuin englanti.Windows 2000:
-
Kaksoisnapsauta Windows Ohjauspaneeli Aluekohtaiset asetukset -kohtaa.
-
Valitse Yleiset-välilehdessä sijainti ja valitse sitten OK.
Windows XP tai Windows Server 2003:
-
Avaa Ohjauspaneeli Aluekohtaiset asetukset ja kieliasetukset.
-
Valitse Aluekohtaiset asetukset -välilehdessä kielialue ja valitse sitten OK.
-
-
Käynnistä Microsoft Visual Studio .NET.
-
Valitse Tiedosto-valikossa Uusi ja valitse sitten Projekti. Valitse Uusi projekti -valintaikkunan Projektityypit-kohdassa Visual Basic Projects. Valitse Mallit-kohdassa Windows-sovellus ja valitse sitten OK. Lomake1 luodaan oletusarvoisesti.
-
Valitse Näytä-valikossa Työkaluryhmä ja lisää sitten painike Form1:een.
-
Saat lomakkeen koodiikkunan näkyviin kaksoisnapsauttamalla Painiketta1.
-
Korvaa koodi-ikkunassa seuraava koodi
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
jossa on:
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
-
Lisää seuraava rivi Form1-koodimoduulin alkuun:
Option Strict Off
-
Luo ja suorita ohjelma painamalla F5-näppäintä.
-
Luo virhe valitsemalla Painike1. Virhe tapahtuu rivillä, joka lukee:
oDoc = oApp.Workbooks.Add
Lisätietoja
Lisätietoja Officen automaatiosta on seuraavassa Microsoft Office Development -sivustossa:
http://support.microsoft.com/ofd Lisätietoja on seuraavissa Microsoft Knowledge Base -artikkeleissa:
301982 Microsoft Excelin automatisoiminen Visual Basic .NET:stä
302084 Microsoft Excelin automatisoiminen Microsoft Visual C# .NET :stä