Sintomas

Se automatizar o Microsoft Excel com o Microsoft Visual Basic .NET, o Microsoft Visual C# .NET ou o Microsoft Visual C++, poderá receber o seguinte erro ao chamar determinados métodos:

Erro: 0x80028018 (-2147647512)Descrição: Formato Antigo ou Biblioteca de Tipos Inválida

Causa

Recebe este erro ao chamar um método do Excel quando as seguintes condições forem verdadeiras:

  • O método requer um LCID (identificador de região).

  • Executa uma versão em inglês do Excel. No entanto, as definições regionais do computador estão configuradas para um idioma não inglês.

Se o computador cliente executar a versão em inglês do Excel e a região do utilizador atual estiver configurada para um idioma diferente do inglês, o Excel tentará localizar o pacote de idiomas para o idioma configurado. Se o pacote de idiomas não for encontrado, o erro é comunicado.

Solução

Para contornar este problema, pode utilizar um dos seguintes métodos:

  • Instale o Multilingual User Interface Pack para a sua versão do Office.

  • Execute o método ou propriedade do Excel com InvokeMember para que possa especificar CultureInfo para a chamada. Por exemplo, o código seguinte ilustra como pode invocar o objeto Livros Adicionar método com "en-US" como 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)
  • Em alternativa, defina CultureInfo antes de chamar o método do Excel. Por exemplo:

    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
  • Crie um diretório 1033 no Microsoft Office\Office11. Em seguida, copie excel.exe para o diretório 1033 e mude o nome para xllex.dll. Para obter mais informações, clique na seguinte ligação:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Quando utiliza uma destas soluções para um computador em que as definições regionais não correspondem à versão de idioma atual do Office, deve estar familiarizado com o comportamento do Excel e com a forma como o Excel interpretará os dados que podem ser formatados para uma região específica. Para obter mais detalhes sobre como escrever soluções globalizadas do Excel com o Visual Studio .NET, consulte os seguintes artigos no MSDN:Creating Office Solutions for Use in Multiple Countries/Regions (Criar Soluções do Office para Utilização em Vários Países/Regiões)

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxProblemas de Globalização e Localização para Soluções Criadas com o Microsoft Visual Studio Tools para o Microsoft Office System

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

Estado

A Microsoft confirmou que se trata de um erro nos produtos Microsoft listados na secção "Aplica-se a".

Mais Informações

Passos para reproduzir o comportamento

  1. Verifique se a região do computador está definida para um idioma diferente do inglês.Para o Windows 2000:

    1. No Windows Painel de Controlo, faça duplo clique em Opções Regionais.

    2. No separador Geral, selecione uma localização e, em seguida, clique em OK.

    Para o Windows XP ou Windows Server 2003:

    1. No Painel de Controlo, abra As Opções Regionais e de Idioma.

    2. No separador Opções Regionais , selecione uma região e, em seguida, clique em OK.

  2. Inicie o Microsoft Visual Studio .NET.

  3. No menu Ficheiro, aponte para Novo e, em seguida, clique em Projeto. Na caixa de diálogo Novo Projeto, em Tipos de Projeto, clique em Projetos do Visual Basic. Em Modelos, clique em Aplicação do Windows e, em seguida, clique em OK. Por predefinição, o Form1 é criado.

  4. No menu Ver, clique em Caixa de Ferramentas e, em seguida, adicione um botão ao Formulário1.

  5. Para apresentar a janela de código do formulário, faça duplo clique em Botão1.

  6. Na janela de código, substitua o seguinte código

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

    com:

    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. Adicione a seguinte linha ao início do módulo de código Form1:

    Option Strict Off
  8. Prima F5 para criar e executar o programa.

  9. Para gerar o erro, clique em Botão1. O erro ocorre na linha onde se lê:

    oDoc = oApp.Workbooks.Add

Referências

Para obter mais informações sobre a Automatização do Office, visite o seguinte Web site de Desenvolvimento do Microsoft Office:

http://support.microsoft.com/ofd Além disso, consulte os seguintes artigos da Base de Dados de Conhecimento Microsoft:

301982 Como automatizar o Microsoft Excel a partir do Visual Basic .NET

302084 Como automatizar o Microsoft Excel a partir do Microsoft Visual C# .NET

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.