Virhe: Muoto on vanha tai tyyppikirjasto ei kelpaa -virhesanoma tulee näyttöön Excelin automatisoimisen yhteydessä

Artikkeleiden käännökset Artikkeleiden käännökset
Artikkelin tunnus: 320369 - Näytä tuotteet, joita tämä artikkeli koskee.
Laajenna kaikki | Kutista kaikki

Tällä sivulla

Oire

Jos automatisoit Microsoft Excelin Microsoft Visual Basic .NETin, Microsoft Visual C# .NETin tai Microsoft Visual C++:n avulla, saatat kohdata seuraavan virheen tiettyjen menetelmien kutsumisen yhteydessä:
Virhe: 0x80028018 (-2147647512)
Kuvaus: Muoto on vanha tai tyyppikirjasto ei kelpaa

Syy

Tämä virhe tulee näyttöön, kun Excel-menetelmää kutsutaan seuraavien ehtojen toteutuessa:
  • Menetelmä edellyttää LCID-tunnuksen (kieliasetuksen tunnuksen).
  • Käytössä on Excelin englanninkielinen versio. Tietokoneen aluekohtaiset asetukset on kuitenkin määritetty muuta kuin englannin kieltä varten.
Jos asiakastietokone suorittaa Excelin englanninkielistä versiota ja nykyisen käyttäjän kieliasetus on jokin muu kuin englanti, Excel yrittää löytää määritetyn kielen kielipaketin. Jos kielipakettia ei löydy, ilmoitetaan virheestä.

Workaround

Voit kiertää ongelman jommallakummalla seuraavista tavoista:
  • Asenna Office-versiosi Multilingual User Interface Pack -paketti.
  • Suorita Excel-menetelmä tai -ominaisuus InvokeMember-menetelmän avulla niin, että voit määrittää kutsulle CultureInfo-luokan. Seuraavassa koodissa esitellään, miten voit käynnistää Workbooks-objektin Add-menetelmän käyttämällä asetusta en-US CultureInfo-luokkana:
    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)
    
  • Voit myös määrittää CultureInfo-luokan ennen Excel-menetelmän kutsumista. Esimerkki:
    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

Kun käytät jotakin näistä kiertotavoista tietokoneelle, jonka aluekohtaiset asetukset eivät vastaa Officen nykyistä kieliversiota, sinun tulee tietää, miten Excel käyttäytyy ja tulkitsee tiettyä kieliversiota varten mahdollisesti muotoillut tiedot. Lisätietoja globalisoitujen Excel-ratkaisujen kirjoittamisesta Visual Studio .NETiä varten on seuraavissa MSDN-artikkeleissa:

Creating Office Solutions for Use in Multiple Countries/Regions (Office-ratkaisujen luominen käytettäväksi useissa maissa tai useilla alueilla)
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
Globalization and Localization Issues for Solutions Created with Microsoft Visual Studio Tools for the Microsoft Office System (Microsoft Visual Studio Tools -työkalujen avulla Microsoft Office systemiä varten luotujen ratkaisujen globalisointi- ja lokalisointiongelmat)
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Tila

Microsoft on vahvistanut, että tämä virhe esiintyy artikkelin alussa luetelluissa Microsoftin tuotteissa.

Enemmän tietoa

Ongelman toistamisen vaiheet

  1. Varmista, että tietokoneen kieliasetus on muu kuin englanti.

    Windows 2000:
    1. Kaksoisnapsauta Ohjauspaneelin Aluekohtaiset asetukset -kuvaketta.
    2. Valitse Yleiset-välilehdessä sijainti ja valitse sitten OK.
    Windows XP tai Windows Server 2003:
    1. Avaa Ohjauspaneelista Aluekohtaiset- ja kieliasetukset.
    2. Valitse Aluekohtaiset asetukset -välilehdessä kieliasetus ja valitse sitten OK.
  2. Käynnistä Microsoft Visual Studio .NET.
  3. Valitse File-valikosta New ja valitse sitten Project. Valitse New Project -valintaikkunan Project Types -kohdassa Visual Basic Projects. Valitse Templates-kohdassa Windows Application ja valitse sitten OK. Oletusarvon mukaan luodaan Form1.
  4. Valitse View-valikosta Toolbox ja lisää sitten painike Form1-lomakkeeseen.
  5. Tuo lomakkeen koodi-ikkuna näyttöön kaksoisnapsauttamalla Button1.
  6. Korvaa koodi-ikkunassa seuraava koodi:
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    					
    seuraavalla koodilla:
    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. Lisää seuraava rivi Form1-koodimoduulin alkuun:
    Option Strict Off
  8. Muodosta ja suorita ohjelma painamalla F5-näppäintä.
  9. Luo virhe napsauttamalla Button1. Virhe ilmenee seuraavalla rivillä:
    oDoc = oApp.Workbooks.Add
    					

Suositukset

Lisätietoja Office-automatisoinnista on seuraavassa Microsoft Office Developmentin verkkosivustossa:
http://support.microsoft.com/ofd
Lue lisätietoja seuraavista Microsoft Knowledge Base -tietokannan artikkeleista:
301982 Microsoft Excelin automatisoiminen Visual Basic .NETin avulla (tämä artikkeli saattaa olla englanninkielinen)
302084 Microsoft Excelin automatisoiminen Microsoft Visual C# .NETin avulla (tämä artikkeli saattaa olla englanninkielinen)

Ominaisuudet

Artikkelin tunnus: 320369 - Viimeisin tarkistus: 23. marraskuuta 2007 - Versio: 8.3
Artikkelin tiedot koskevat seuraavia tuotteita:
  • 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
Hakusanat: 
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

Anna palautetta

 

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