Arquivo da tag: 1004

VBA – Resolvendo o problema do erro 1004, Não é possível obter a propriedade Object da classe OLEObject

Você está todo feliz fazendo seu aplicativo em VBA, adiciona alguns controles ActiveX diretamente na sua planilha, codifica, tudo certo. Mas na hora de executar, é presenteado com a seguinte mensagem:

Não é possível obter a propriedade Object da classe OLEObject

Ok, sem pânico. O problema é de entendimento longo, mas de fácil solução. Para não ver mais esta mensagem, basta fazer o seguinte:

Vá ao menu Arquivo->Opções para ver esta tela:Opções Excel

Aqui, acesse a última opção na lista da esquerda chamada “Central de Confiabilidade”.

Central de Confiabilidade

Clique agora no único botão da tela à direita com o texto “Configurações da Central de Confiabilidade”. Você verá uma tela com várias opções à esquerda. Nela, selecione a opção “Configuração do ActiveX”:

Configuração do ActiveX

Você verá várias opções nesta tela que definirão o funcionamento (ou não) dos controles ActiveX, sendo cada uma delas explicadas abaixo:

  • Desabilitar todos os controles sem notificação     Todos os controles ActiveX em documentos estão desabilitados. Um espaço reservado para um X vermelho ou uma imagem do controle é exibida.
  • Avisar antes de habilitar não seguros para controles de inicialização com restrições adicionais e seguros para inicialização (SFI) controles com restrições mínimas     Há dois comportamentos com base na presença de projetos do VBA.
    • Projeto com um VBA    Todos os controles ActiveX são desativados e a barra de mensagem será exibida. Clique em Ativar para ativar os controles.
    • Projeto sem um VBA    Os controles SFI ActiveX estão ativados com restrições mínimas e não são exibidos na barra de mensagens. No entanto, os controles ActiveX devem todos ser marcados como SFI para não para gerar a barra de mensagens. Os controles UFI ActiveX estão desativados.
  • Avisar antes de habilitar todos os controles com restrições mínimas     Este é o padrão. Há dois comportamentos que se baseiam na presença de projetos do VBA:
    • Projeto com um VBA    Todos os controles ActiveX são desativados e a barra de mensagem será exibida. Clique em Ativar para ativar os controles.
    • Projeto sem um VBA    Os controles SFI ActiveX estão ativados com restrições mínimas e não são exibidos na barra de mensagens. No entanto, os controles ActiveX devem todos ser marcados como SFI para não para gerar a barra de mensagens. Os controles UFI ActiveX estão desativados.
  • Habilitar todos os controles sem restrições e sem aviso (controles não é recomendados, possivelmente perigosos podem ser executados)    Habilite todos os controles ActiveX em documentos com restrições mínimas.
  • Modo de segurança (ajuda a limitar o acesso do controle ao computador)     Ative os controles SFI ActiveX no modo de segurança. Modo de segurança significa que o desenvolvedor tenha marcado como o controle como seguro.

(retirado o site da Microsoft)

Para resolver o problema, é preciso selecionar uma opção de contexto confiável. Para meu caso, mantive opção Avisar antes de habilitar todos os controles com restrições mínimas, que é a mensagem que aparece quando se abre o Excel (ativação de Macros).

Depois disso, o código que estava gerando o erro deve passar a funcionar. Se for preciso, reabra o arquivo com os controles/macros ativadas.

Referências:
https://support.office.com/pt-br/article/Habilitar-ou-desabilitar-os-controles-ActiveX-nos-documentos-do-Office-cebec41e-b63f-46ac-8961-84dbe0bbd486#bm1

Vídeo do passo a passo