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

  1. Varmista, että tietokoneen kieliasetukseksi on määritetty jokin muu kieli kuin englanti.Windows 2000:

    1. Kaksoisnapsauta Windows Ohjauspaneeli Aluekohtaiset asetukset -kohtaa.

    2. Valitse Yleiset-välilehdessä sijainti ja valitse sitten OK.

    Windows XP tai Windows Server 2003:

    1. Avaa Ohjauspaneeli Aluekohtaiset asetukset ja kieliasetukset.

    2. Valitse Aluekohtaiset asetukset -välilehdessä kielialue ja valitse sitten OK.

  2. Käynnistä Microsoft Visual Studio .NET.

  3. 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.

  4. Valitse Näytä-valikossa Työkaluryhmä ja lisää sitten painike Form1:een.

  5. Saat lomakkeen koodiikkunan näkyviin kaksoisnapsauttamalla Painiketta1.

  6. 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
  7. Lisää seuraava rivi Form1-koodimoduulin alkuun:

    Option Strict Off
  8. Luo ja suorita ohjelma painamalla F5-näppäintä.

  9. 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ä

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.