Resumo
Ao usar o novo operador ou a função CreateObject no Microsoft Visual Basic para criar uma instância de um aplicativo do Microsoft Office, você poderá receber a seguinte mensagem de erro:
Erro em tempo de execução '429': componente ActiveX não pode criar objeto
Esse erro ocorre quando o COM (Component Object Model) não pode criar o objeto de Automação solicitado e, portanto, o objeto Automação não está disponível para o Visual Basic. Esse erro não ocorre em todos os computadores.
Este artigo descreve como diagnosticar e resolver problemas comuns que podem causar esse erro.
Informações adicionais
No Visual Basic, há várias causas de erro 429. O erro ocorrerá se alguma das seguintes condições for verdadeira:
-
Há um erro no aplicativo.
-
Há um erro na configuração do sistema.
-
Há um componente ausente.
-
Há um componente danificado.
Para localizar a causa do erro, isole o problema. Se você receber a mensagem de erro "429" em um computador cliente, use as informações a seguir para isolar e resolver o erro em aplicativos do Microsoft Office.
Nota Algumas das informações a seguir também podem se aplicar a servidores COM que não são do Office. No entanto, este artigo pressupõe que você deseja automatizar aplicativos do Office.
Examinar o código
Antes de solucionar o erro, tente isolar uma única linha de código que pode estar causando o problema.
Se você descobrir que uma única linha de código pode estar causando o problema, conclua esses procedimentos:
-
Verifique se o código usa a criação de objeto explícito.
Os problemas são mais fáceis de identificar se eles são limitados a uma única ação. Por exemplo, procure a criação de objeto implícito que é usada 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 usam a criação de objeto implícito. O Microsoft Office Word 2003 não é iniciado até que a variável seja chamada pelo menos uma vez. Como 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 Application é criado ou quando o objeto Document é criado.
Em vez disso, você pode fazer chamadas explícitas para criar cada objeto separadamente, da seguinte maneira.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Quando você faz chamadas explícitas para criar cada objeto separadamente, o problema é mais fácil de isolar. Isso também pode facilitar a leitura do código.
-
Use a função CreateObject em vez do novo operador ao criar uma instância de um aplicativo do Office.
A função CreateObject mapeia de perto o processo de criação que a maioria dos clientes Microsoft Visual C++ usar. A função CreateObject também permite alterações no CLSID do servidor entre versões. Você pode usar a função CreateObject com objetos com limite inicial e com objetos com limite tardio. -
Verifique se a cadeia de caracteres "ProgID" passada para
CreateObject está correta e verifique se a cadeia de caracteres "ProgID" é independente de versão. Por exemplo, use a cadeia de caracteres "Excel.Application" em vez de usar a cadeia de caracteres "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 especificada na cadeia de caracteres "ProgID". -
Use o comando Erl para relatar o número de linha da linha de código que não tem êxito. Isso pode ajudá-lo a depurar aplicativos que não podem ser executados no IDE. O código a seguir informa qual objeto de Automaçã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
Use a função MsgBox e o número de linha para acompanhar o erro.
-
Use a associação tardia da seguinte maneira:
Dim oWordApp As Object
Os objetos com limite inicial exigem que suas interfaces personalizadas sejam empacotadas entre os limites do processo. Se a interface personalizada não puder ser empacotada durante CreateObject ou durante o Novo, você receberá a mensagem de erro "429". Um objeto com limite tardio usa a interface definida pelo sistema IDispatch que não exige que um proxy personalizado seja empacotado. Use um objeto com limite tardio para verificar se esse procedimento funciona corretamente.
Se o problema ocorrer somente quando o objeto estiver associado precocemente, o problema será no aplicativo do servidor. Normalmente, você pode reinstalar o aplicativo, conforme descrito na seção "Examinar o Servidor de Automação" deste artigo para corrigir o problema.
Examinar o servidor de automação
O motivo mais comum para que um erro ocorra quando você usa CreateObject ou New é um problema que afeta o aplicativo do servidor. Normalmente, a configuração do aplicativo ou a configuração do aplicativo causa o problema. Para solucionar problemas, use os seguintes métodos:
-
Verifique se o aplicativo do Office que você deseja automatizar está instalado no computador local. Verifique se você pode executar o aplicativo. Para fazer isso, clique em Iniciar, clique em
Executar e tente executar o aplicativo. Se você não puder executar o aplicativo manualmente, o aplicativo não funcionará por meio da automação. -
Registre novamente o aplicativo da seguinte maneira:
-
Clique em Iniciar e clique em Executar.
-
Na caixa de diálogo Executar , digite o caminho do servidor e, em seguida, anexe /RegServer até o final da linha.
-
Clique em OK.
O aplicativo é executado silenciosamente. O aplicativo é registrado novamente como um servidor COM.
Se o problema ocorrer porque uma chave do registro está ausente, essas etapas normalmente corrigem o problema.
-
-
Examine a chave LocalServer32 no CLSID para o aplicativo que você deseja automatizar. Verifique se a chave LocalServer32 aponta para o local correto para o aplicativo. Verifique se o nome do caminho está em um formato de caminho curto (DOS 8.3). Você não precisa registrar um servidor usando um nome de caminho curto. No entanto, nomes de caminho longo que incluem espaços inseridos podem causar problemas em alguns sistemas.
Para examinar a chave de caminho armazenada para o servidor, inicie o Editor de Registro do Windows da seguinte maneira:-
Clique em Iniciar e clique em Executar.
-
Digite regedit e clique em OK.
-
Mova para a chave HKEY_CLASSES_ROOT\CLSID.
Os CLSIDs para os servidores de automação registrados no sistema estão sob essa chave. -
Use os valores a seguir da chave CLSID para encontrar a chave que representa o aplicativo do Office que você deseja automatizar. Examine a chave LocalServer32 da chave CLSID para o caminho.
Servidor do Office
Chave CLSID
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-00000000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-000000000000046}
-
Verifique o caminho para verificar se ele corresponde ao local real do arquivo.
Observação Os nomes de caminho curto podem parecer corretos quando não estão corretos. Por exemplo, o Office e o Microsoft Internet Explorer (se eles estiverem instalados em seus locais padrão) têm um caminho curto semelhante a C:\PROGRA~1\MICROS~X\ (onde
X é um número). Esse nome pode inicialmente não parecer ser um nome de caminho curto.
Para determinar se o caminho está correto, siga estas etapas:-
Clique em Iniciar e clique em Executar.
-
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. -
Clique em OK.
-
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. 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ê deverá reverter esses arquivos para os 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 o 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 resolver 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.File name
Versão
Data modificada
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 possam restringir a execução de código no aplicativo officeObservação
Desabilitar o programa antivírus apenas temporariamente em um sistema de teste que não está 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.-
No menu Arquivo, clique em Opções e clique em Suplementos.
-
Clique em Gerenciar suplementos COM e clique em Ir.
Nota A caixa de diálogo suplementos COM é aberta. -
Desmarque a caixa de seleção para qualquer suplemento de terceiros e 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, confira o seguinte artigo do Office:
Baixar e instalar ou reinstalar Office 365 ou Office 2016 em um computador 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: