ERRO: Mensagem de erro ao automatizar o Excel 2002 "Old Format or Invalid Type Library"

Sintomas

Se automatizar o Microsoft Excel 2002 com o Microsoft Visual Basic .NET, Microsoft Visual C# .NET ou o Microsoft Visual C++, poderá receber a seguinte mensagem ao chamar determinados métodos:
Error: 0x80028018 (-2147647512)
Description: Old Format or Invalid Type Library

Causa

Receberá esta mensagem ao chamar um método do Excel quando as seguintes condições se verificarem:

  • Utilizou antecipadamente a ligação para chamar o método. - e -

  • Este método requer um LCID (identificador de local). - e -

  • Executou uma versão em inglês do Excel 2002, mas as versões regionais do computador estão configuradas para um idioma diferente.
Se o computador cliente está a executar a versão em inglês do Microsoft Excel 2002 e a localização do utilizador actual está configurada para um idioma diferente, o Excel tenta localizar o pacote do idioma para o idioma configurado. Se este pacote não for localizado, aparece um erro.

Resolução

Para contornar este problema:
  • Defina a informação da localização actual para inglês antes de chamar o Excel. Por exemplo:
    System.Threading.Thread.CurrentThread.CurrentCulture =
    System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
    -ou-

  • Utilize uma ligação posterior e não uma anterior. - ou -

  • Instale o Microsoft Office XP Multilingual User Interface Pack. Para obter mais informações sobre este produto, visite o seguinte Web site da Microsoft:

    Disponibilidade do Office XP com o Multilingual User Interface Pack
    http://www.microsoft.com/office/evaluation/indepth/multilingual/muipackavailable.asp

Ponto Da Situação

A Microsoft confirma que este erro ocorre nos produtos referidos na secção "A informação contida neste artigo aplica-se a".

Mais Informação

Passos para reproduzir este comportamento

  1. Verifique se a localização do computador está definida para um idioma diferente do inglês:
    1. No Painel de controlo do Windows, faça duplo clique em Opções regionais
    2. Clique no separador Geral seleccione uma localização e, em seguida, clique em OK.
  2. Inicie o Microsoft Visual Studio .NET.
  3. No menu File, aponte para New e, em seguida, clique em Project. Na caixa de diálogo New Project, em Project Types, clique Visual Basic Projects. Em Templates, clique em Windows Application e, em seguida, clique em OK. Por predefinição, é criado o Form1.
  4. Adicione uma referência a Microsoft Excel 10.0 Object Library:
    1. No menu Project, clique em Add Reference.
    2. Na caixa de diálogo Add Reference, clique no separador COM, seleccione Microsoft Excel 10.0 Object Library e, em seguida, clique no botão Select.
    3. Para aceita a selecção, clique em OK.
  5. No menu View, clique em Toolbox e, em seguida, adicione um botão ao Form1.
  6. Para visualizar a janela de código do formulário, faça duplo clique em Button1.
  7. Na janela do código, substitua o seguinte código
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click
    End Sub
    por:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim oApp As Excel.Application
    Dim oDoc As Excel.Workbook

    oApp = New Excel.Application()
    oApp.Visible = True
    oDoc = oApp.Workbooks.Add
    oDoc.Close()
    oApp.Quit()

    oDoc = Nothing
    oApp = Nothing
    End Sub
  8. Adicione o seguinte código na parte superior do Form1.vb:
    Imports Microsoft.Office.Interop
  9. Prima a tecla F5 para criar e executar o programa.
  10. Para criar o erro, clique em Button1. Este erro ocorre na linha em que se lê:
    oDoc = oApp.Workbooks.Add

Referências

Para mais informações acerca da automatização do Office, visite o Web site Microsoft Office Development:
Para mais informações, consulte os seguintes artigos da base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
307029 HOW TO: Transfer XML Data to Microsoft Excel 2002 by Using Visual C# .NET
307021 HOW TO: Transfer XML Data to Microsoft Excel 2002 by Using Visual Basic .NET
301982 HOWTO: Automate Microsoft Excel from Visual Basic .NET
302084 HOWTO: Automate Microsoft Excel from Visual C# .NET
Propriedades

ID do Artigo: 320369 - Última Revisão: 29/04/2008 - Revisão: 1

Comentários