Você abre uma pasta de trabalho com macros VBA após uma atualização do Microsoft 365 e vê uma mensagem de erro de compilação. O erro geralmente aponta para uma biblioteca ausente, um modelo de objeto alterado ou uma referência quebrada. Este artigo explica por que as atualizações do Microsoft 365 causam erros de compilação VBA e fornece etapas claras para resolvê-los.
As atualizações do Microsoft 365 podem alterar a versão do runtime VBA ou descontinuar determinados objetos e métodos. Quando seu código depende de uma versão específica de biblioteca ou usa um recurso removido, o Excel não consegue compilar a macro. Você aprenderá a corrigir referências de biblioteca, atualizar código obsoleto e evitar que o erro retorne.
Principais Conclusões: Corrigindo Erros de Compilação VBA Após Atualizações do Microsoft 365
- Ferramentas > Referências no editor VBA: Verifique e religue referências de biblioteca quebradas que causam erros de compilação.
- Navegador de Objetos (F2) no editor VBA: Encontre objetos e métodos obsoletos ou renomeados para atualizar seu código.
- Re-registro manual de arquivos DLL/OCX via Prompt de Comando: Restaure controles ausentes como TreeView ou ListView após uma atualização.
Por que as Atualizações do Microsoft 365 Quebram Macros VBA
O Microsoft 365 recebe atualizações mensais de recursos e segurança. Essas atualizações podem alterar o número da versão de bibliotecas de tipos, como a biblioteca de extensibilidade do Visual Basic for Applications ou a Biblioteca de Objetos do Microsoft Office. Quando seu projeto VBA tem uma referência a uma versão específica de biblioteca que não existe mais após a atualização, o Excel exibe um erro de compilação como “Não é possível encontrar projeto ou biblioteca” ou “Tipo definido pelo usuário não definido”.
Outra causa é a descontinuação de certos objetos, métodos ou propriedades. Por exemplo, o objeto FileSearch foi removido há anos, mas algumas macros legadas ainda o referenciam. As atualizações também podem alterar o GUID de uma biblioteca, quebrando a referência. Por fim, atualizações de segurança podem bloquear ou desabilitar controles ActiveX que seu código VBA utiliza, levando a erros de compilação quando a biblioteca do controle está ausente.
Mensagens de Erro Comuns Após uma Atualização
Você pode ver qualquer uma destas mensagens:
- “Erro de compilação: Não é possível encontrar projeto ou biblioteca”
- “Erro de compilação: Tipo definido pelo usuário não definido”
- “Erro de compilação: Método ou membro de dados não encontrado”
- “Erro de compilação: Variável não definida”
- “Erro de compilação: Argumento não opcional”
Todas essas apontam para uma referência ausente ou incompatível.
Etapas para Corrigir Erros de Compilação VBA Após uma Atualização do Microsoft 365
Siga estas etapas em ordem. Após cada etapa, tente compilar seu projeto novamente selecionando Depurar > Compilar VBAProject no editor VBA.
Etapa 1: Abra o Editor VBA e Verifique as Referências
- Abra o editor VBA
Pressione Alt + F11 no Excel para abrir o Editor Visual Basic. - Abra a caixa de diálogo Referências
No menu do editor VBA, clique em Ferramentas > Referências. - Procure por referências quebradas
Qualquer referência marcada com “AUSENTE” está quebrada. Desmarque essa referência. - Readicione a referência correta
Role a lista e marque a caixa para o mesmo nome de biblioteca, mas com o número da versão atual. Por exemplo, se “Microsoft Office 16.0 Object Library” estiver ausente, marque “Microsoft Office 16.0 Object Library” se aparecer. Se a biblioteca não estiver na lista, clique em Procurar e localize o arquivo .olb ou .dll correto em C:\Program Files (x86)\Common Files\microsoft shared\OFFICE16 ou similar. - Compile o projeto
Clique em OK, depois no menu do editor VBA clique em Depurar > Compilar VBAProject. Se nenhum erro aparecer, a correção está completa.
Etapa 2: Atualize Código Obsoleto
Se as referências estão corretas, mas o erro de compilação persiste, o código pode usar um objeto ou método obsoleto. Use o Navegador de Objetos para pesquisar o identificador problemático.
- Abra o Navegador de Objetos
No editor VBA, pressione F2. - Pesquise pelo objeto ou método
Digite o nome que aparece na mensagem de erro na caixa de pesquisa. Se a biblioteca estiver ausente ou o objeto não existir, o Navegador de Objetos não mostrará resultados ou mostrará um local diferente. - Substitua pelo equivalente atual
Por exemplo, se seu código usaFileSearch, substitua porApplication.FileDialog(msoFileDialogFilePicker). Se usaCommandBars, substitua pelo XML da Faixa de Opções ouApplication.CommandBarsse ainda for suportado. Consulte a documentação de referência VBA da Microsoft para a sintaxe atual. - Compile novamente
Depurar > Compilar VBAProject.
Etapa 3: Re-registre Controles ActiveX Ausentes
Se seu código VBA usa controles ActiveX personalizados como TreeView ou ListView, a atualização pode ter cancelado o registro da DLL do controle.
- Feche o Excel
Salve todo o trabalho e saia do Excel. - Abra o Prompt de Comando como administrador
Pressione a tecla Windows, digite cmd, clique com o botão direito em Prompt de Comando e selecione Executar como administrador. - Re-registre o controle
Digiteregsvr32 "C:\Windows\SysWOW64\mscomctl.ocx"e pressione Enter. Ajuste o caminho se o controle estiver em System32 ou em uma pasta diferente. Controles comuns incluem mscomctl.ocx (TreeView, ListView) e mscomct2.ocx (DatePicker, MonthView). - Reinicie o Excel e teste
Abra a pasta de trabalho e compile o projeto VBA novamente.
Etapa 4: Redefina Referências do Projeto VBA Programaticamente
Se você gerencia muitas pastas de trabalho, pode automatizar a correção de referências com uma pequena macro. Esta macro remove todas as referências quebradas e readiciona a versão atual das bibliotecas comuns.
- Insira um novo módulo
No editor VBA, clique em Inserir > Módulo. - Cole o seguinte código
Sub FixBrokenReferences() Dim vbProj As VBIDE.VBProject Dim ref As Reference Set vbProj = ThisWorkbook.VBProject For Each ref In vbProj.References If ref.IsBroken Then vbProj.References.Remove ref End If Next ref ' Re-adicionar bibliotecas comuns vbProj.References.AddFromFile _ "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE16\MSO.DLL" vbProj.References.AddFromFile _ "C:\Windows\SysWOW64\stdole2.tlb" MsgBox "Referências quebradas removidas e bibliotecas padrão readicionadas." End Sub - Execute a macro
Pressione F5 enquanto o cursor está dentro da macro. Depois compile o projeto normalmente.
Se o Excel Ainda Tiver Erros de Compilação Após a Correção Principal
Erro de Compilação: “Tipo definido pelo usuário não definido” em uma classe personalizada
Esse erro ocorre quando um módulo de classe referencia um tipo de uma biblioteca ausente. Abra o módulo de classe e verifique as instruções Dim. Se o tipo for de uma biblioteca como ADODB (ActiveX Data Objects), vá em Ferramentas > Referências e certifique-se de que a versão atual dessa biblioteca esteja marcada. Para ADODB, marque “Microsoft ActiveX Data Objects 6.1 Library” (ou a versão mais recente).
Erro de Compilação: “Método ou membro de dados não encontrado” em um objeto conhecido
Esse erro significa que o método ou propriedade foi removido ou renomeado na nova versão da biblioteca. Use o Navegador de Objetos para encontrar o nome correto. Por exemplo, no modelo de objeto VBA do Excel, a propriedade Range.Phonetics ainda existe, mas Range.SpecialCells não mudou. Consulte a documentação da Microsoft para o objeto específico. Se o método realmente não existir mais, você deve reescrever essa parte do código usando uma abordagem alternativa.
Erro de Compilação: “Não é possível encontrar projeto ou biblioteca” em todas as pastas de trabalho
Se esse erro aparecer em todas as pastas de trabalho que você abre, as referências padrão no modelo de projeto VBA podem estar quebradas. No editor VBA, clique em Ferramentas > Referências e observe quais bibliotecas estão marcadas por padrão. Desmarque qualquer uma que mostre “AUSENTE”. Em seguida, feche e reabra o Excel. Se o problema persistir, execute o Reparo do Office em Programas e Recursos no Painel de Controle. Escolha Reparo Rápido primeiro; se não resolver, execute o Reparo Online.
Reparo Rápido vs Reparo Online: Principais Diferenças
| Item | Reparo Rápido | Reparo Online |
|---|---|---|
| Descrição | Repara arquivos do Office sem baixar novos arquivos de instalação | Baixa e reinstala o Office dos servidores da Microsoft |
| Requer internet | Não | Sim |
| Tempo para concluir | 5–10 minutos | 30–60 minutos dependendo da velocidade da conexão |
| Corrige entradas de registro ausentes | Sim | Sim |
| Corrige arquivos DLL corrompidos | Parcial | Completo |
| Afeta complementos instalados | Não | Não |
Após a primeira atualização do Microsoft 365 que causa um erro de compilação, você pode evitar problemas futuros definindo as referências do projeto VBA para usar a versão mais recente da biblioteca e evitando objetos obsoletos. Use ligação antecipada com a versão atual da biblioteca de tipos ou mude para ligação tardia para evitar conflitos de versão completamente. A ligação tardia usa CreateObject e Dim variable As Object, o que ignora as verificações de referência em tempo de compilação.
Agora você sabe como identificar referências quebradas, atualizar código obsoleto e re-registrar controles ausentes após uma atualização do Microsoft 365. Na próxima vez que vir um erro de compilação, comece verificando Ferramentas > Referências em busca de bibliotecas ausentes. Para estabilidade a longo prazo, considere converter suas macros para usar ligação tardia quando possível. Essa abordagem reduz a dependência de versões específicas de bibliotecas e evita erros de compilação após futuras atualizações.