Erro de Compilação VBA no Excel Após Atualização do Microsoft 365: Corrigir
🔍 WiseChecker

Erro de Compilação VBA no Excel Após Atualização do Microsoft 365: Corrigir

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.

ADVERTISEMENT

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

  1. Abra o editor VBA
    Pressione Alt + F11 no Excel para abrir o Editor Visual Basic.
  2. Abra a caixa de diálogo Referências
    No menu do editor VBA, clique em Ferramentas > Referências.
  3. Procure por referências quebradas
    Qualquer referência marcada com “AUSENTE” está quebrada. Desmarque essa referência.
  4. 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.
  5. 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.

  1. Abra o Navegador de Objetos
    No editor VBA, pressione F2.
  2. 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.
  3. Substitua pelo equivalente atual
    Por exemplo, se seu código usa FileSearch, substitua por Application.FileDialog(msoFileDialogFilePicker). Se usa CommandBars, substitua pelo XML da Faixa de Opções ou Application.CommandBars se ainda for suportado. Consulte a documentação de referência VBA da Microsoft para a sintaxe atual.
  4. 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.

  1. Feche o Excel
    Salve todo o trabalho e saia do Excel.
  2. 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.
  3. Re-registre o controle
    Digite regsvr32 "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).
  4. 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.

  1. Insira um novo módulo
    No editor VBA, clique em Inserir > Módulo.
  2. 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
  3. Execute a macro
    Pressione F5 enquanto o cursor está dentro da macro. Depois compile o projeto normalmente.

ADVERTISEMENT

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.

ADVERTISEMENT