KĻŪDA: automatizējot Excel, tiek rādīta kļūda "Veca formāta vai nederīga tipa bibliotēka"

Pazīmes

Ja automatizējat Microsoft Excel, izmantojot Microsoft Visual Basic .NET, Microsoft Visual C# .NET vai Microsoft Visual C++, izsaucot noteiktas metodes, var tikt parādīts šāds kļūdas ziņojums:

Piezīme

Kļūda: 0x80028018 (-2147647512)
Apraksts: veca formāta vai nederīga tipa bibliotēka

Iemesls

Šī kļūda rodas, izsaucot Excel metodi, ja ir šādi nosacījumi:

  • Šai metodei nepieciešams LCID (lokalizācijas identifikators).

  • Jūs lietojat programmas Excel angļu valodas versiju. Tomēr datora reģionālie iestatījumi ir konfigurēti valodai, kas nav angļu valoda.

Ja klienta datorā darbojas Excel angļu valodas versija un pašreizējā lietotāja lokalizācija ir konfigurēta valodai, kas nav angļu valoda, Excel mēģinās atrast konfigurētās valodas pakotni. Ja valodas pakotne netiek atrasta, tiek ziņots par kļūdu.

Risinājums

Lai apietu šo problēmu, varat izmantot kādu no šīm metodēm:

  • Savai Office versijai instalējiet daudzvalodu lietotāja interfeisa pakotni.

  • Izpildiet Excel metodi vai rekvizītu, izmantojot InvokeMember, lai varētu norādīt zvana CultureInfo. Piemēram, tālāk norādītais kods parāda, kā var izsaukt objektu Workbooks Add metode ar "lv-US" kā 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)
    
    
  • Vai arī pirms Excel metodes izsaukšanas iestatiet CultureInfo. Piemērs.

    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
    
  • Sadaļā Microsoft Office\Office11 izveidojiet direktoriju 1033. Pēc tam kopējiet excel.exe direktorijā 1033 un pārdēvējiet to par xllex.dll.

     Lai iegūtu papildinformāciju, noklikšķiniet uz šīs saites:
    http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Ja izmantojat kādu no šiem risinājumiem datorā, kura reģionālie iestatījumi neatbilst pašreizējai Office valodas versijai, jums ir jāzina, kā Excel darbojas un kā Excel interpretē datus, kas var būt formatēti konkrētai lokalizācijai. Lai iegūtu papildinformāciju par globalizētu Excel risinājumu rakstīšanu, izmantojot Visual Studio .NET, lūdzu, skatiet šos MSDN rakstus:

Office risinājumu izveide lietošanai vairākās valstīs/reģionos

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx Globalizācijas un lokalizācijas problēmas risinājumiem, kas izveidoti, izmantojot Microsoft Office Visual Studio Tools sistēmai Microsoft Office

http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

Statuss

Microsoft apstiprināja, ka šī ir kļūda Microsoft produktos, kas norādīti sadaļā "attiecas uz".

Papildinformācija

Darbības reproducēšanai

  1. Pārliecinieties, vai datora lokalizācijas valoda nav angļu valoda.

    Operētājsistēmā Windows 2000:

    1. Windows vadības panelī veiciet dubultklikšķi uz Reģionālās opcijas.
    2. Cilnē Vispārīgi atlasiet atrašanās vietu un pēc tam noklikšķiniet uz Labi.

    Operētājsistēmai Windows XP vai Windows Server 2003:

    1. Vadības panelī atveriet Reģionālās un valodu opcijas.
    2. Cilnē Reģionālās opcijas atlasiet lokalizāciju un pēc tam noklikšķiniet uz Labi.
  2. Startējiet Microsoft Visual Studio .NET.

  3. Izvēlnē Fails norādiet uz Jauns un pēc tam noklikšķiniet uz Projektēt. Dialoglodziņa Jauns projekts sadaļā Projektu veidi noklikšķiniet uz Visual Basic projekti. Sadaļā Veidnes noklikšķiniet uz Windows lietojumprogramma un pēc tam uz Labi. Pēc noklusējuma tiek izveidota veidlapa Form1.

  4. Izvēlnē Skats noklikšķiniet uz Rīklodziņš un pēc tam pievienojiet pogu Forma1.

  5. Lai parādītu formas kodu logu, veiciet dubultklikšķi uz pogas 1.

  6. Kodu logā aizstājiet šādu kodu

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    
    

    ar:

    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. Form1 koda moduļa sākumā pievienot šādu rindu:

    Option Strict Off
    
  8. Nospiediet taustiņu F5, lai izveidotu un palaistu programmu.

  9. Lai ģenerētu kļūdu, noklikšķiniet uz Poga1. Kļūda rodas rindiņā ar tekstu:

    oDoc = oApp.Workbooks.Add
    
    

Atsauces

Papildinformāciju par Office automatizāciju skatiet Microsoft Office izstrādes vietnē:

http://support.microsoft.com/ofd Papildus skatiet šos Microsoft zināšanu bāzes rakstus:

301982 Kā automatizēt Microsoft Excel no Visual Basic .NET

302084 Kā automatizēt Microsoft Excel no Microsoft Visual C# .NET