INFORMAÇÕES: Solucionando o erro 429 ao automatizar aplicativos do Office

Traduções deste artigo Traduções deste artigo
ID do artigo: 244264 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Quando você usa o operador Novo ou a função CreateObject no Microsoft Visual Basic para criar uma instância de um aplicativo do Microsoft Office, você pode receber a seguinte mensagem de erro:
Erro em tempo de execução '429': O componente ActiveX não consegue criar o objeto
Esse erro ocorre quando o objeto de automação requisitado não pode ser criado pelo COM e portanto não está disponível para o Visual Basic. O erro é geralmente visto em alguns computadores.

Este artigo fornece algumas dicas de solução de problemas para ajudá-lo a diagnosticar e resolver problemas comuns conhecidos por causar esse erro.

Mais Informações

Ao contrário de alguns erros do Visual Basic, não existe um motivo único que cause o erro 429. O problema acontece por causa de um erro no aplicativo ou na configuração do sistema ou por causa da falta de um componente ou de um componente danificado. Encontrar a causa exata é uma questão de eliminar possibilidades. Se você encontrar esse erro no computador de um cliente, existem vários itens que você precisa verificar para isolar e resolver esse erro.

Os itens passam algumas sugestões práticas para solucionar esse erro ao trabalhar com aplicativos do Office. Algumas dessas informações também podem se aplicar a servidores que não são Office COM, mas este artigo pressupõe que você está tentando automatizar o Microsoft Office.

Como verificar o código

O primeiro lugar para começar a procurar onde está o problema é no código. Antes de solucionar o erro, é preciso saber onde ele está ocorrendo. Tente encontrar o erro numa única linha do código.

Quando encontrar o código que está falhando, tente fazer o seguinte:
  • Certifique-se de que o código use criação explícita de objeto. Qualquer problema pode ser identificado com mais facilidade se for afunilado numa única ação. Por exemplo, não faça o seguinte:
    Application.Documents.Add 'DON'T USE THIS!!
    						
    ou:
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    						
    Ambos os métodos usam criação implícita de objeto. O Microsoft Word não é iniciado até que a variável seja chamada pelo menos uma vez. Como a variável pode ser chamada em partes diferentes do programa, isso pode dificultar a localização do problema. Além disso, não está claro se o problema está em criar o objeto do aplicativo ou do documento.

    Em vez disso, faça chamadas explícitas para criar cada objeto separadamente:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    						
    Isso facilita o isolamento do problema e deixa o código mais legível.
  • Ao criar uma instância de um aplicativo do Microsoft Office, use CreateObject em vez de Novo. CreateObject mapeia mais de perto o processo de criação usado pela maioria dos clientes do Visual C++ e permite alterações no CLSID do servidor entre versões. CreateObject pode ser usado tanto com o objeto de vínculo anterior quanto com o objeto de vínculo posterior.
  • Verifique se a linha ProgID passada para CreateObject está correta e se não depende da versão (ou seja, usam "Excel.Application" em vez de "Excel.Application.8"). Pode ser que o sistema que está falhando tenha uma versão mais antiga ou mais nova do Microsoft Office do que a versão que você especificou em ProgID.
  • Para ajudar a depurar aplicativos que não podem ser executados em IDE, use o comando Erl para relatar o número da linha que falha. Por exemplo, o seguinte código dirá qual objeto de automação não pode ser criado (Word ou Excel):
    Dim oWord As Word.Application
    Dim oExcel As Excel.Application
    
    On Error Goto err_handler
    
    1: Set oWord = CreateObject("Word.Application")
    2: Set oExcel = CreateObject("Excel.Application")
    
    ' ... some other code
    
    err_handler:
      MsgBox "The code failed at line " & Erl, vbCritical
    						
    Use uma combinação de caixas de mensagens e de números de linhas para encontrar o erro.
  • Tente usar o vínculo posterior (ou seja, Dim oWordApp como objeto). Objetos de vínculo anterior necessitam que suas interfaces personalizadas sejam empacotadas pelos limites do processo. Se houver algum problema ao empacotar uma interface personalizada durante CreateObject ou Novo, você receberá uma mensagem de erro 429. Um objeto com vinculo posterior usa uma interface definida pelo usuário(IDispatch) que não necessita de um proxy personalizado para ser empacotada. Experimente usar um objeto de vínculo posterior para ver se faz diferença.

    Se o problema ocorrer quando o objeto for de vínculo anterior, o problema está no aplicativo do servidor e geralmente pode ser corrigido reinstalando o aplicativo (veja mais adiante).
  • Se estiver automatizando de ASP ou de um componente MTS, use CreateObject em vez de Server.CreateObject(). O uso de Server.CreateObject criará uma instância no aplicativo do Office com a identidade de um pacote MTS que é conhecido por causar problemas no Microsoft Office.

Verifique o servidor de automação

Os motivos mais comuns para haver um erro em CreateObject ou Novo são problemas no próprio aplicativo do servidor. Geralmente, esses problemas estão na configuração ou na instalação do aplicativo. Alguns itens que devem ser verificados:
  • Verifique se o aplicativo do Microsoft Office que você quer usar para automatizar está instalado no computador local e certifique-se de que seja possível iniciar o aplicativo a partir do menu Iniciar e depois da caixa de diálogo Executar. Se não for possível iniciar o programa manualmente ele não funcionará durante a automação.
  • Registre novamente o aplicativo digitando o caminho para o servidor no menu Iniciar e depois para a caixa diálogo Executar, e depois anexe /RegServer ao final da linha. Pressione OK. Isso deve fazer com que o aplicativo seja executado silenciosamente e registrá-lo novamente como um servidor COM. Se o problema estiver numa chave de registro que está faltando, isso geralmente corrige o problema.
  • Verifique a chave LocalServer32 no CLSID para o aplicativo que você quiser usar para automatizar. Certifique-se de que ela aponta para o local correto do aplicativo e também de que o nome do caminho esteja num formato curto (DOS 8.3). Ainda que não seja obrigatório que um servidor seja registrado usando um nome de caminho curto, nomes de caminho longos que têm espaços embutidos são conhecidos por causar problemas em alguns sistemas (veja mais adiante).

    Para verificar a chave do caminho que está armazenada para o servidor, inicie o Editor do Registro do Windows, digitando regedit no menu Iniciar e depois na caixa de diálogo Executar. Navegue até a chave HKEY_CLASSES_ROOT\Clsid. Nessa chave você encontrará os CLSIDs para os servidores de automação registrados no sistema. Depois, usando os valores, encontre a chave que representa o aplicativo do Office que você quiser automatizar e verifique o caminho da chave LocalServer32 do mesmo.
       +========================+=========================================+
       | Servidor do Office     | Chave CLSID                             |
       +========================+=========================================+
       | Access.Application     | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}  |
       +------------------------+-----------------------------------------+
       | Excel.Application      | {00024500-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | FrontPage.Application  | {04DF1015-7007-11D1-83BC-006097ABE675}  |
       +------------------------+-----------------------------------------+
       | Outlook.Application    | {0006F03A-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B}  |
       +------------------------+-----------------------------------------+
       | Word.Application       | {000209FF-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
    						
    O caminho é correspondente ao local do arquivo? Saiba que nomes de caminho curtos podem dar a impressão de que um caminho está correto quando na verdade não está. Por exemplo, tanto o Microsoft Office quanto o Microsoft Internet Explorer (se estiverem instalados em seus locais padrão) terão um nome de caminho similar a "C:\PROGRA~1\MICROS~X\" em que X será um número. Não é tão óbvio que você está vendo um nome de caminho curto.

    É possível testar se o caminho está realmente correto copiando o valor do registro e colocando-o na caixa de diálogo Executar, no menu Iniciar (remova a opção /Automation antes de executar o aplicativo). O aplicativo é iniciado quando você seleciona OK? Se for, então o servidor está registrado corretamente. Se não for, você deve substituir o valor da chave LocalServer32 pelo caminho correto (use um nome de caminho curto, se for possível).
  • Sabe-se que ocorrem problemas ao automatizar o Word ou o Excel se ou o modelo Normal.dot (Word) ou o arquivo de recurso Excel.xlb (Excel) ficou corrompido. Para testar se houve um corrompimento, pesquise os discos rígidos locais para encontrar todas as instâncias de Normal.dot ou de *.xlb. (Observe que se você estiver executando o Windows 2000, Windows NT ou o Windows 95/98 com perfis ativados, você pode encontrar diversas cópias desses arquivos, uma para cada perfil de usuário do sistema.) Renomeie temporariamente o(s) arquivo(s) Normal.dot ou o(s) arquivo(s) *.xlb e execute o teste de automação novamente (o Word e o Excel criarão esses arquivos se não forem encontrados). Agora o código funciona? Se funcionar, então os arquivos que você renomeou devem ser excluídos, já que estão corrompidos. Se não funcionar, você deve renomeá-los com seus nomes originais novamente para que as configurações personalizadas contidas nesses arquivos não sejam perdidas.
  • Se você estiver em um sistema Windows NT, Windows 2000, Windows XP ou Windows Server 2003, execute o aplicativo na conta do Administrador. Servidores do Office necessitam de acesso para leitura/gravação no registro e no disco rígido e talvez não sejam carregados corretamente se as configurações de segurança atuais negarem esse privilégio.

Como verificar o sistema

A configuração do sistema também podem causar problemas na criação de servidores COM fora do processo. A seguir estão alguns itens que devem ser verificados em sistemas em que o erro ocorrer:
  • O problema acontece com algum servidor fora do processo? Se você tiver um aplicativo que use apenas um determinado servidor COM (por exemplo o Word), convém testar um outro servidor fora do processo para se certificar de que o problema não seja na própria camada COM. Se nenhum servidor COM fora do processo puder ser criado nesse sistema, então uma reinstalação dos arquivos OLE do sistema (veja abaixo) ou uma reinstalação do sistema operacional será necessária para resolver a questão.
  • Verifique os números de versão dos arquivos OLE do sistema que gerenciam a automação. Esses arquivos estão geralmente instalados como um conjunto e devem ter números de versão correspondentes. Um utilitário de instalação configurado incorretamente pode instalar, erroneamente, os arquivos separadamente, fazendo com que eles não sejam correspondentes. Para evitar problemas com a automação, você deve verificar os arquivos para se certificar de que as versões são correspondentes.

    Você encontrará os arquivos de automação no diretório Windows\System ou Winnt\System32. A seguir está uma lista de arquivos que devem ser verificados:
       +-----------------+-------------+---------------------+
       | Nome do arquivo |   Versão    | Modificado em       |
       +-----------------+-------------+---------------------+
       |  Asycfilt.dll   |  2.40.4275  | 08 de março de 1999 |
       |  Oleaut32.dll   |  2.40.4275  | 08 de março de 1999 |
       |  Olepro32.dll   |  5.0.4275   | 08 de março de 1999 |
       |  Stdole2.tlb    |  2.40.4275  | 08 de março de 1999 |
       +-----------------+-------------+---------------------+
    						
    Verifique as versões dos arquivos clicando no arquivo com o botão direito do mouse no Explorer e selecionando Propriedades no menu que aparecer. Os valores mais importantes são os últimos quatro dígitos da versão do arquivo e a data em que foi modificado. Convém verificar se esses valores são iguais para todos os arquivos de automação.

    Observe que os números de versão e as datas acima foram citadas apenas com a finalidade de exemplos. Os valores reais podem ser diferentes. O importante é que esses valores sejam correspondentes entre si e não a esta tabela.

    Se os arquivos não tiverem números de versão ou datas de modificação correspondentes, você pode fazer o download de um utilitário de extração automática que atualizará seus arquivos de automação. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    290887 VBRun60sp5.exe instala os arquivos de tempo de execução do Visual Basic 6.0 SP5
  • O Windows NT 4.0 tem um problema conhecido ao iniciar servidores de automação que ficam numa pasta que contém um espaço embutido no nome e/ou pareça com outra pasta cujos primeiros 8 caracteres são idênticos. Por exemplo, um servidor que esteja em C:\Arquivos de programas\QualquerPasta pode falhar ao iniciar durante uma chamada para CreateObject se houver outra pasta no sistema chamada C:\Coisas de programas\QualquerPasta. Para obter mais informações sobre isso, consulte o seguinte artigo na Base de Dados de Conhecimento:Para obter informações adicionais e etapas uma solução alternativa para o problema, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    185126 BUG: Falha de inicialização do servidor COM/OLE no Windows NT 4.0

Como reinstalar o Microsoft Office

Se nenhuma das etapas anteriores ajudar a resolver o problema, considere desinstalar e reinstalar o Microsoft Office. A Microsoft recomenda que você desinstale a versão existente primeiro e depois reinstale a partir dos disquetes originais de instalação.

Para obter uma lista completa de itens que devem ser removidos, por favor, leia os seguintes artigos na Base de Dados de Conhecimento:
219423 OFF2000: Como remover completamente o Microsoft Office 2000
158658 OFF97: Como remover completamente o Microsoft Office 97

Referências

Para obter informações adicionais sobre como solucionar o problema do erro '429', clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
240377 COMO: Certificar-se de que o Jet 3.5 está instalado corretamente (Parte I)
Para obter as informações mais recentes e código de exemplo sobre automação do Microsoft Office, por favor, consulte o site (em inglês) de suporte online da Microsoft em:
http://support.microsoft.com/support/officedev/

Propriedades

ID do artigo: 244264 - Última revisão: terça-feira, 30 de maio de 2006 - Revisão: 5.1
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Outlook 98 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Palavras-chave: 
kbautomation kbfaq kbinfo KB244264

Submeter comentários

 

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