Recebe o erro de tempo de execução 429 ao automatizar as aplicações do Office

Aplica-se a
Office 2016 Office 2013

Resumo

Quando utiliza o operador Novo ou a função CreateObject no Microsoft Visual Basic para criar uma instância de uma aplicação do Microsoft Office, poderá receber a seguinte mensagem de erro:

Observação

Erro de tempo de execução "429": O componente ActiveX não consegue criar o objeto

Este erro ocorre quando o Modelo de Objeto de Componente (COM) não consegue criar o objeto de Automatização pedido e o objeto automatização está, portanto, indisponível para o Visual Basic. Este erro não ocorre em todos os computadores.

Este artigo descreve como diagnosticar e resolve problemas comuns que podem causar este erro.

Mais informações

No Visual Basic, existem várias causas do erro 429. O erro ocorre se alguma das seguintes condições for verdadeira:

  • Existe um erro na aplicação.
  • Existe um erro na configuração do sistema.
  • Existe um componente em falta.
  • Existe um componente danificado.

Para encontrar a causa do erro, isole o problema. Se receber a mensagem de erro "429" num computador cliente, utilize as seguintes informações para isolar e resolve o erro nas aplicações do Microsoft Office.

Nota Algumas das seguintes informações também podem ser aplicadas a servidores COM que não são do Office. No entanto, este artigo pressupõe que pretende automatizar as aplicações do Office.

Examinar o código

Antes de resolver o erro, tente isolar uma única linha de código que possa estar a causar o problema.

Se descobrir que uma única linha de código pode estar a causar o problema, conclua estes procedimentos:

  • Confirme que o código utiliza a criação explícita de objetos.

    Os problemas são mais fáceis de identificar se estão reduzidos a uma única ação. Por exemplo, procure a criação implícita de objetos que é utilizada como um dos seguintes.

    Exemplo de código 1

    Application.Documents.Add 'DON'T USE THIS!!
    

    Exemplo de código 2

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    

    Ambos os exemplos de código utilizam a criação implícita de objetos. O Microsoft Office Word 2003 não é iniciado até que a variável seja chamada, pelo menos, uma vez. Uma vez que a variável pode ser chamada em diferentes partes do programa, o problema pode ser difícil de localizar. Pode ser difícil verificar se o problema é causado quando o objeto Aplicação é criado ou quando o objeto Documento é criado.

    Em vez disso, pode fazer chamadas explícitas para criar cada objeto separadamente, da seguinte forma.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    

    Quando faz chamadas explícitas para criar cada objeto separadamente, o problema é mais fácil de isolar. Isto também pode facilitar a leitura do código.

  • Utilize a função CreateObject em vez do operador Novo quando criar uma instância de uma aplicação do Office.

    A função CreateObject mapeia de perto o processo de criação que a maioria dos clientes Microsoft Visual C++ utilizam. A função CreateObject também permite alterações no CLSID do servidor entre versões. Pode utilizar a função CreateObject com objetos vinculados antecipadamente e com objetos vinculados em atraso.

  • Verifique se a cadeia "ProgID" que é transmitida a
    CreateObject está correto e, em seguida, verifique se a cadeia "ProgID" é independente da versão. Por exemplo, utilize a cadeia "Excel.Application" em vez de utilizar a cadeia "Excel.Application.8". O sistema que falha pode ter uma versão mais antiga do Microsoft Office ou uma versão mais recente do Microsoft Office do que a versão que especificou na cadeia "ProgID".

  • Utilize o comando Erl para comunicar o número de linha da linha de código que não é bem-sucedida. Isto pode ajudá-lo a depurar aplicações que não podem ser executadas no IDE. O código seguinte indica que objeto de Automatização não pode ser criado (Microsoft Word ou Microsoft Office Excel 2003):

    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
    

    Utilize a função MsgBox e o número de linha para controlar o erro.

  • Utilize o enlace tardio da seguinte forma:

    Dim oWordApp As Object
    

    Os objetos vinculados antecipadamente exigem que as respetivas interfaces personalizadas sejam configuradas através dos limites do processo. Se não for possível organizar a interface personalizada durante o CreateObject ou durante o Novo, receberá a mensagem de erro "429". Um objeto com ligação tardia utiliza a interface definida pelo sistema IDispatch que não requer a organização de um proxy personalizado. Utilize um objeto atrasado para verificar se este procedimento funciona corretamente.

    Se o problema ocorrer apenas quando o objeto estiver vinculado antecipadamente, o problema estará na aplicação do servidor. Normalmente, pode reinstalar a aplicação conforme descrito na secção "Examinar o Servidor de Automatização" deste artigo para corrigir o problema.

Examinar o servidor de automatização

O motivo mais comum para ocorrer um erro quando utiliza CreateObject ou New é um problema que afeta a aplicação do servidor. Normalmente, a configuração da aplicação ou a configuração da aplicação causa o problema. Para resolver problemas, utilize os seguintes métodos:

  • Verifique se a aplicação do Office que pretende automatizar está instalada no computador local. Certifique-se de que pode executar a aplicação. Para tal, clique em Iniciar, clique em
    Execute e, em seguida, tente executar a aplicação. Se não conseguir executar a aplicação manualmente, a aplicação não funcionará através da automatização.

  • Registe novamente a aplicação da seguinte forma:

    1. Clique em Iniciar e clique em Executar.

    2. Na caixa de diálogo Executar , escreva o caminho do servidor e, em seguida, acrescente /RegServer ao final da linha.

    3. Clique em OK.

      A aplicação é executada silenciosamente. A aplicação é novamente registada como um servidor COM.

    Se o problema ocorrer porque uma chave de registo está em falta, estes passos normalmente corrijam o problema.

  • Examine a chave LocalServer32 no CLSID da aplicação que pretende automatizar. Certifique-se de que a chave LocalServer32 aponta para a localização correta para a aplicação. Certifique-se de que o nome do caminho está num formato de caminho curto (DOS 8.3). Não tem de registar um servidor utilizando um nome de caminho abreviado. No entanto, nomes de caminho longos que incluem espaços incorporados podem causar problemas em alguns sistemas.

    Para examinar a chave de caminho armazenada para o servidor, inicie o Editor de Registo do Windows da seguinte forma:

    1. Clique em Iniciar e clique em Executar.

    2. Digite regedit e clique em OK.

    3. Ir para a tecla HKEY_CLASSES_ROOT\CLSID.

      Os CLSIDs dos servidores de automatização registados no sistema estão nesta chave.

    4. Utilize os seguintes valores da chave CLSID para localizar a chave que representa a aplicação do Office que pretende automatizar. Examine a chave LocalServer32 da chave CLSID do caminho.

      Servidor do Office Chave CLSID
      Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application {00024500-0000-0000-C000-000000000046}
      Outlook.Application {0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B}
      Word. Aplicação {000209FF-0000-0000-C000-000000000046}
    5. Verifique o caminho para se certificar de que corresponde à localização real do ficheiro.

    Nota Os nomes dos caminhos curtos podem parecer corretos quando não estão corretos. Por exemplo, tanto o Office como o Microsoft Internet Explorer (se estiverem instalados nas suas localizações predefinidas) têm um caminho curto semelhante a C:\PROGRA~1\MICROS~X\ (em que
    X é um número). Inicialmente, este nome pode não parecer ser um nome de caminho curto.

    Para determinar se o caminho está correto, siga estas etapas:

    1. Clique em Iniciar e clique em Executar.

    2. Copie o valor do registro e cole o valor na caixa de diálogo Executar .

      Nota Remova a opção /automation antes de executar o aplicativo.

    3. Clique em OK.

    4. Verifique se o aplicativo é executado corretamente.

      Se o aplicativo for executado depois de clicar em OK, o servidor será registrado corretamente. Se o aplicativo não for executado depois de clicar em OK, substitua o valor da chave LocalServer32 pelo caminho correto. Use um nome de caminho curto, se puder.

  • Teste para possível corrupção do modelo Normal.dot ou do arquivo de recurso do Excel.xlb. Os problemas podem ocorrer quando você automatiza o Microsoft Word ou o Microsoft Excel se o modelo Normal.dot no Word ou o arquivo de recursos do Excel.xlb no Excel estiver corrompido. Para testar esses arquivos, pesquise nos discos rígidos locais todas as instâncias de Normal.dot ou do Excel.xlb.

    Nota Você pode encontrar várias cópias desses arquivos. Há uma cópia de cada um desses arquivos para cada perfil de usuário instalado no sistema.

    Renomeie temporariamente os arquivos Normal.dot ou os arquivos do Excel.xlb e execute novamente o teste de automação. Word e o Excel criarão esses arquivos se não puderem encontrá-los. Verifique se o código funciona. Se o código funcionar quando um novo arquivo Normal.dot for criado, exclua os arquivos renomeados. Esses arquivos estão corrompidos. Se o código não funcionar, você deve reverter esses arquivos para seus nomes de arquivo originais para salvar as configurações personalizadas salvas nesses arquivos.

  • Execute o aplicativo na conta Administrador. Os servidores do Office exigem acesso de leitura/gravação ao registro e à unidade de disco. Os servidores do Office podem não carregar corretamente se as configurações de segurança atuais negarem o acesso de leitura/gravação.

Examinar o sistema

A configuração do sistema também pode causar problemas para a criação de servidores COM fora de processo. Para solucionar problemas, use os seguintes métodos no sistema no qual o erro ocorre:

  • Determine se o problema ocorre com qualquer servidor fora de processo. Se você tiver um aplicativo que usa um servidor COM específico (como Word), teste um servidor fora de processo diferente para garantir que o problema não esteja ocorrendo na própria camada COM. Se você não puder criar um servidor COM fora de processo no computador, reinstale os arquivos do sistema OLE conforme descrito na seção "Reinstalando o Microsoft Office" deste artigo ou reinstale o sistema operacional para resolve o problema.

  • Examine os números de versão dos arquivos do sistema OLE que gerenciam a automação. Normalmente, esses arquivos são instalados como um conjunto. Esses arquivos devem corresponder aos números de build. Um utilitário de configuração configurado incorretamente pode instalar os arquivos separadamente. Isso faz com que os arquivos sejam incompatíveis. Para evitar problemas na automação, examine os arquivos para garantir que os builds de arquivos sejam correspondidos.

    Os arquivos de automação estão localizados no diretório Windows\System32. Examine os arquivos a seguir.

    Nome do arquivo Versão Data da modificação
    Asycfilt.dll 10.0.16299.15 29 de setembro de 2017
    Ole32.dll 10.0.16299.371 29 de março de 2018
    Oleaut32.dll 10.0.16299.431 3 de maio de 2018
    Olepro32.dll 10.0.16299.15 29 de setembro de 2017
    Stdole2.tlb 3.0.5014 29 de setembro de 2017

    Para examinar a versão do arquivo, clique com o botão direito do mouse no arquivo no Windows Explorer e clique em Propriedades. Observe os últimos quatro dígitos da versão do arquivo (o número de build) e a data em que o arquivo foi modificado pela última vez. Verifique se esses valores são iguais para todos os arquivos de automação.

    Nota Os arquivos a seguir são para Windows 10 Versão 1709, build 16299.431. Esses números e datas são apenas exemplos. Seus valores podem ser diferentes.

  • Use o utilitário de Configuração do Sistema (Msconfig.exe) para examinar os serviços e a inicialização do sistema para aplicativos de terceiros que podem restringir a execução de código no aplicativo do Office

    Nota Desabilite o programa antivírus apenas temporariamente em um sistema de teste que não esteja conectado à rede.

    Como alternativa, siga estas etapas no Outlook para desabilitar suplementos de terceiros:

    Se esse método resolver o problema, entre em contato com o fornecedor de antivírus de terceiros para obter mais informações sobre uma atualização para o programa antivírus.

    1. No menu Arquivo , clique em Opções e clique em Suplementos.

    2. Clique em Gerenciar suplementos COM e clique em Ir.

      Nota A caixa de diálogo suplementos COM é aberta.

    3. Desmarque a caixa marcar para qualquer suplemento de terceiros e clique em OK.

    4. Reinicie o Outlook.

Reinstalar o Office

Se nenhum dos procedimentos anteriores resolve o problema, remova e reinstale o Office.

Para obter mais informações, confira o seguinte artigo do Office:

Baixar e instalar ou reinstalar o Office 365 ou o Office 2016 em seu PC ou Mac

Referências

Para obter mais informações sobre a automação do Office e exemplos de código, acesse o seguinte site da Microsoft:

Introdução ao desenvolvimento do Office