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:
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 resolver 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 resolver 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 1Application.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 do Microsoft Visual C++ utiliza. 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" transmitida para
CreateObject está correta 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-lhe 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
Executar 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:
-
Clique em Iniciar e, em seguida, clique em Executar.
-
Na caixa de diálogo Executar , escreva o caminho do servidor e, em seguida, acrescente /RegServer ao final da linha.
-
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:-
Clique em Iniciar e, em seguida, clique em Executar.
-
Escreva regedit e, em seguida, clique em OK.
-
Ir para a tecla HKEY_CLASSES_ROOT\CLSID.
Os CLSIDs dos servidores de automatização registados no sistema estão nesta chave. -
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.Application
{000209FF-0000-0000-C000-000000000046}
-
Verifique o caminho para se certificar de que corresponde à localização real do ficheiro.
Note 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 respetivas localizações predefinidas) têm um caminho curto semelhante a C:\PROGRA~1\MICROS~X\ (em
queX é um número). Inicialmente, este nome pode não parecer ser um nome de caminho curto. Para determinar se o caminho está correto, siga estes passos:-
Clique em Iniciar e, em seguida, clique em Executar.
-
Copie o valor do registo e, em seguida, cole o valor na caixa de diálogo Executar .
Nota Remova o parâmetro /automation antes de executar a aplicação. -
Clique em OK.
-
Verifique se a aplicação é executada corretamente.
Se a aplicação for executada depois de clicar em OK, o servidor é registado corretamente. Se a aplicação não for executada depois de clicar em OK, substitua o valor da chave LocalServer32 pelo caminho correto. Utilize um nome de caminho abreviado, se possível.
-
-
Teste possíveis danos no modelo Normal.dot ou no ficheiro de recursos do Excel.xlb. Podem ocorrer problemas quando automatiza o Microsoft Word ou o Microsoft Excel se o modelo Normal.dot no Word ou o ficheiro de recursos do Excel.xlb no Excel estiver danificado. Para testar estes ficheiros, procure nos discos rígidos locais todas as instâncias de Normal.dot ou do Excel.xlb.
Nota Poderá encontrar várias cópias destes ficheiros. Existe uma cópia de cada um destes ficheiros para cada perfil de utilizador que está instalado no sistema. Mude temporariamente o nome dos ficheiros Normal.dot ou excel.xlb e, em seguida, volte a executar o teste de automatização. O Word e o Excel criam estes ficheiros se não os conseguirem encontrar. Verifique se o código funciona. Se o código funcionar quando for criado um novo ficheiro Normal.dot, elimine os ficheiros cujo nome mudou. Estes ficheiros estão danificados. Se o código não funcionar, tem de reverter estes ficheiros para os respetivos nomes de ficheiro originais para guardar quaisquer definições personalizadas guardadas nestes ficheiros. -
Execute a aplicação na conta de Administrador. Os servidores do Office necessitam de acesso de Leitura/Escrita ao registo e à unidade de disco. Os servidores do Office poderão não carregar corretamente se as definições de segurança atuais negarem o acesso de Leitura/Escrita.
Examinar o sistema
A configuração do sistema também pode causar problemas na criação de servidores COM fora do processo. Para resolver problemas, utilize os seguintes métodos no sistema no qual ocorre o erro:
-
Determine se o problema ocorre com qualquer servidor fora do processo. Se tiver uma aplicação que utiliza um determinado servidor COM (como o Word), teste um servidor fora do processo diferente para se certificar de que o problema não está a ocorrer na própria camada COM. Se não conseguir criar um servidor COM fora do processo no computador, reinstale os ficheiros do sistema OLE conforme descrito na secção "Reinstalar o Microsoft Office" deste artigo ou reinstale o sistema operativo para resolver o problema.
-
Examine os números de versão dos ficheiros do sistema OLE que gerem a automatização. Normalmente, estes ficheiros são instalados como um conjunto. Estes ficheiros têm de corresponder aos números de criação. Um utilitário de configuração configurado incorretamente pode instalar os ficheiros separadamente por engano. Isto faz com que os ficheiros não correspondam. Para evitar problemas na automatização, examine os ficheiros para se certificar de que as compilações dos ficheiros são correspondidas.
Os ficheiros de automatização estão localizados no diretório Windows\System32. Examine os seguintes ficheiros.Nome do ficheiro
Versão
Data de 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
-
Utilize o utilitário de Configuração do Sistema (Msconfig.exe) para examinar os serviços e o arranque do sistema para aplicações de terceiros que possam restringir a execução de código na aplicação
do OfficeNota Desativar o programa antivírus apenas temporariamente num sistema de teste que não esteja ligado à rede. Em alternativa, siga estes passos no Outlook para desativar suplementos de terceiros: Se este método resolver o problema, contacte o fornecedor antivírus de terceiros para obter mais informações sobre uma atualização do programa antivírus.-
No menu Ficheiro, clique em Opções e, em seguida, clique em Suplementos.
-
Clique em Gerir suplementos COM e, em seguida, clique em Ir.
Nota É aberta a caixa de diálogo Suplementos COM. -
Desmarque a caixa de verificação de qualquer suplemento de terceiros e, em seguida, clique em OK.
-
Reinicie o Outlook.
-
Reinstalar o Office
Se nenhum dos procedimentos anteriores resolver o problema, remova e reinstale o Office.
Para obter mais informações, consulte o seguinte artigo do Office:
Transferir e instalar ou reinstalar o Office 365 ou o Office 2016 num PC ou Mac
Referências
Para obter mais informações sobre exemplos de código e automatização do Office, aceda ao seguinte site da Microsoft: