PROBLEMĂ: Eroarea „Bibliotecă de format vechi sau de tip nevalid” când se automatizează Excel

S I M P T O M E

Dacă automatizaţi Microsoft Excel cu Microsoft Visual Basic .NET, Microsoft Visual C# .NET sau Microsoft Visual C++, este posibil să primiţi următoarea eroare când apelaţi anumite metode:
Eroare: 0x80028018 (-2147647512)
Descriere: Bibliotecă de format vechi sau de tip nevalid

C A U ZĂ

Primiţi această eroare la apelarea unei metode Excel când sunt adevărate următoarele condiţii:
  • Metoda necesită un LCID (identificator de setări regionale).
  • Executaţi o versiune de Excel în limba engleză. Însă, setările regionale ale computerului sunt configurate pentru o altă limbă decât limba engleză.
În cazul în care computerul client execută versiunea în limba engleză de Excel şi setările regionale pentru utilizatorul curent sunt configurate pentru altă limbă decât limba engleză, Excel va încerca să găsească pachetul lingvistic pentru limba configurată. Dacă nu se găseşte pachetul lingvistic, se raportează eroarea.

R E M E D I E R E

Pentru a ocoli această problemă, utilizaţi una din următoarele metode:
  • Instalaţi Multilingual User Interface Pack pentru versiunea dvs. de Office.
  • Executaţi metoda sau proprietatea Excel utilizând InvokeMember pentru a fi posibilă specificarea CultureInfo pentru apelare. De exemplu, următorul cod arată cum poate fi invocat obiectul Workbooks din metoda Add cu „en-US” pe post de 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)
  • Sau, setaţi CultureInfo înainte de a apela metoda Excel. De exemplu:
    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

Când utilizaţi una dintre aceste soluţii pentru un computer unde setările regionale nu se potrivesc cu versiunea curentă de limbă a Office, se recomandă să fiţi familiarizat cu modul în care se comportă Excel şi cu modul în care Excel va interpreta datele care pot fi formatate pentru anumite setări regionale. Pentru mai multe informaţii despre crearea de soluţii globalizate pentru Excel cu Visual Studio .NET, consultaţi următoarele articole în MSDN:

Crearea de soluţii Office pentru a fi utilizate în ţări şi regiuni multipleProbleme de globalizare şi localizare pentru soluţii create cu Microsoft Visual Studio Tools pentru Microsoft Office System

S T A R E

Microsoft a confirmat că aceasta este o eroare în produsele Microsoft enumerate în secţiunea „Se aplică la”.

I N F O R M AŢ I I S U P L I M E N T A R E

Paşi pentru a reproduce comportamentul

  1. Verificaţi că setările regionale pentru computer sunt setate la altă limbă decât limba engleză.

    Pentru Windows 2000:
    1. În Windows Control Panel, faceţi dublu clic pe Regional Options.
    2. În caseta General, selectaţi o locaţie, apoi faceţi clic pe OK.
    Pentru Windows XP sau Windows Server 2003:
    1. În Panoul de control (Control Panel), deschideţi Opţiuni regionale şi lingvistice (Regional and Language Options).
    2. În fila Opţiuni regionale (Regional Options), selectaţi o setare regională, apoi faceţi clic pe OK.
  2. Porniţi Microsoft Visual Studio .NET.
  3. În meniul File, indicaţi spre New, apoi faceţi clic pe Project. În caseta de dialog New Project, sub Project Types, faceţi clic pe Visual Basic Projects. Sub Templates, faceţi clic pe Windows Application, apoi pe OK. Implicit, se creează Form1.
  4. În meniul View, faceţi clic pe Toolbox, apoi adăugaţi un buton la Form1.
  5. Pentru a afişa fereastra de cod pentru formular, faceţi dublu clic pe Button1.
  6. În fereastra de cod, înlocuiţi următorul cod
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click
    End Sub
    cu:
    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. Adăugaţi următoarea linie la începutul modului de cod Form1:
    Option Strict Off
  8. Apăsaţi F5 pentru a compila şi executa programul.
  9. Pentru a genera eroarea, faceţi clic pe Button1. Eroarea se produce în linia:
    oDoc = oApp.Workbooks.Add

R E F E R I NŢ E

Pentru mai multe informaţii despre automatizarea Office, vizitaţi următorul site Web Microsoft Office Development: În plus, consultaţi următoarele articole din Baza de cunoştinţe Microsoft:
301982 Automatizarea Microsoft Excel cu Visual Basic .NET (articolul poate să fie în limba engleză)
302084 Automatizarea Microsoft Excel cu Microsoft Visual C# .NET (articolul poate să fie în limba engleză)
Proprietăți

ID articol: 320369 - Ultima examinare: 29 apr. 2008 - Revizie: 1

Feedback