VB - Run-time error '429': ActiveX component can't create object


Run-time error '429': ActiveX component can't create object

Esta mensagem de erro em geral possui 4 motivos para ocorrer:

1- Você não tem um arquivo TLB, Activex DLL/OCX requerido;
2- Um arquivo TLB ou Activex DLL/OCX necessário esta presente mas não esta registrado no sistema;
3- Os arquivos de Run Time do VB possuem uma versão mais recete do que você precisa para executar o projeto;
4- Um arquivo TLB ou Activex DLL/OCX esta corrompido;

Em geral você terá que registrar o componente para resolver o problema e isso pode ser feito das seguintes formas:

1- Usar o próprio VB como ferramenta para realizar o registro;
2- Executar o programa Regsvr32.exe;
3- Chamar o programa DLLRegisterServer a partir do seu programa VB;

1- A caixa de diálogo que você obtém quando seleciona Project->Components (CTRL+T) para referenciar controles e projetos permite que você registre componentes automaticamente. Selecione a opção apropriada, clique em Browse (Procurar) e localize a OCX, DLL ou TLB e clique OK. O componente será registrado mas você deverá fazer isso antes de carregar o projeto que requer o componente a ser registrado.

2- O Regsvr32.exe é um pequeno executável fornecido com sistema Windows (Win95,XP e NT) que chama o programa DLLRegisterServer em um arquivo especificado. Para usá-lo, basta clicar em Iniciar=>Executar, digitar regsvr32 e arrastar o arquivo que você deseja registrar a partir do Explorer para a caixa Iniciar Executar.

A seguir clique em OK para fazer o registro. Se der certo, haverá uma caixa de mensagem avisando, caso contrário, a caixa de mensagem irá dizer-lhe que falhou com algum de erro COM.

O Regsvr32 tem um número de opções de linha de comando que permitem controlar o que ele faz. Por padrão, ele registra um controle ou DLL e abre uma caixa de mensagem dizendo o que fez. As seguintes opções de comando permitem que você modifique esse comportamento:

/u - Desfaz o registro do servidor.
/s - Silencioso; não mostrar nenhuma caixa de mensagem
/c - Saída para o Console

O código para a instalação do assistente do VB mostra como voce pode chamar DLLRegisterServer, ainda usando a DLL fornecida com o SetupKit (VB5STKIT.DLL para VB5). Pesquise por DLLSelfRegister no código para ver como o isso feito.

Obs: Para registrar bibliotecas de tipos (TLB) você também pode usar o utilitário de registro que vem com o Visual Basic.

Além disso a criação de objetos requer que a classe do objeto seja registrada no registro do sistema e que todas as bibliotecas associadas de vínculo dinâmico (DLL) estejam disponível. Este erro tem as seguintes causas e soluções:

1- A classe não está registrada. Por exemplo, o registro do sistema não tem nenhuma menção da classe, ou a classe é mencionada, mas especifica um arquivo do tipo errado ou um arquivo que não pode ser encontrado.

Se possível, tente iniciar o aplicativo do objeto. Se as informações do registro estão desatualizados ou incorretas, o aplicativo deve verificar o registro e corrigir as informações. Se ao iniciar o aplicativo não resolver o problema, execute novamente o programa de instalação do aplicativo.

2. A DLL exigida pelo objeto não pode ser usada, seja porque ela não pode ser encontrada, ou ela foi encontrada, mas esta corrompida.

Certifique-se de todas as DLLs associados estão disponíveis. Por exemplo, o Data Access Object (DAO) exige DLLs de suporte que variam entre as plataformas. Você pode ter que executar novamente o programa de instalação para tal objeto, se for isso que está causando esse erro.

3. O objeto está disponível na máquina, mas é um objeto de automação licenciado, e não pode verificar a disponibilidade de a licença necessária para instanciá-lo.

Alguns objetos podem ser instanciados somente após o componente ter encontrado uma chave de licença, que verifica se o objeto é registrado para instanciação na máquina atual. Quando é feita uma referência a um objeto através de uma biblioteca de tipo ou biblioteca de objetos instalada corretamente, a chave correta é fornecida automaticamente.

Se a tentativa de instanciar o objeto é o resultado de uma chamada CreateObject ou GetObject, o objeto deve encontrar a chave. Neste caso, ele pode procurar no registro do sistema ou procurar um arquivo especial que ele cria quando é instalado, por exemplo, um arquivo com a extensão .Lic. Se a chave não pode ser encontrada, o objeto não pode ser instanciado. Se um usuário final configurou indevidamente o aplicativo do objeto, inadvertidamente apagou um arquivo necessário, ou alterou o registro do sistema, o objeto pode não ser capaz de encontrar sua chave. Se a chave não pode ser encontrada, o objeto não pode ser instanciado. Neste caso, a instanciação pode funcionar na máquina do desenvolvedor, mas não na máquina do usuário. Pode ser necessário para o usuário ter que reinstalar o objeto licenciado.

4. Você está tentando usar a função GetObject para obter uma referência a classe criada com o Visual Basic. GetObject não pode ser usado para obter uma referência a uma classe criada com o Visual Basic.

5. O acesso ao objeto foi explicitamente negado. Por exemplo, você pode estar tentando acessar um objeto de dados que está sendo usado atualmente e está bloqueado para evitar situações de impasse. Se for esse o caso, você pode ser capaz de acessar o objeto em outro momento.

Windows Vista

Ao instalar aplicações Visual Basic feitas na versão 5 ou 6 no Windows Vista/Windows 7 podem ocorrer alguns problemas como referenciar uma aplicação Componente Activex EXE independente que provavelmente esta corretamente instalada na pasta System32. Para tentar resolver este problema você pode executar este componente "exe" pela primeira vez, como administrador; para isso clique com o botão do mouse no arquivo "exe" e selecione "executar como administrador", depois desta primeira execução o componente se auto-instala a cada momento em que o aplicativo principal criar uma instância.

Se o componente ActiveX não esta registrado, você pode registrá-lo manualmente usando o RegSrv32 do prompt do administrador.

Se nenhuma destas dicas te ajudar talvez o problema esteja no próprio aplicativo, neste caso recorra ao seu suporte técnico.

"Meus filhinhos , estas coisas vos escrevo, para que não pequeis; e se alguém pecar, temos um advogado para com o Pai, Jesus Cristo, o justo." I João 2:1

Referências:


José Carlos Macoratti