Como Executar Macro VBA em Todos os Documentos de uma Pasta
🔍 WiseChecker

Como Executar Macro VBA em Todos os Documentos de uma Pasta

Executar a mesma macro VBA em todos os documentos Word dentro de uma pasta economiza horas de trabalho manual. Você pode aplicar alterações de formatação, inserir cabeçalhos ou atualizar tabelas em centenas de arquivos sem abrir cada um individualmente. Este artigo explica como escrever e executar um script VBA que percorre todos os arquivos .docx em uma pasta especificada e executa sua macro em cada documento. Você aprenderá a estrutura exata do código, como definir o caminho da pasta e o que fazer quando o Word bloquear a macro ou quando um arquivo estiver corrompido.

Principais Conclusões: Execução em Lote de Macros para Múltiplos Documentos

  • Função Dir com curinga .docx: Percorre todos os arquivos Word em uma pasta sem precisar de uma caixa de diálogo de arquivo.
  • Método Documents.Open dentro do loop: Abre cada arquivo, aplica a macro, depois fecha e salva as alterações automaticamente.
  • Application.ScreenUpdating = False: Acelera o processo em lote ocultando a janela do documento durante a execução.

ADVERTISEMENT

Como o Loop de Pasta VBA Funciona e o Que Você Precisa Antes de Começar

O VBA usa a função Dir para localizar todos os arquivos que correspondem a um padrão como “docx” dentro de um caminho de pasta que você especifica. O script abre cada arquivo usando Documents.Open, executa seu código personalizado no documento ativo e fecha o arquivo com Close SaveChanges:=wdSaveChanges. Esse loop se repete até que não existam mais arquivos correspondentes.

Antes de executar esta macro, você deve habilitar a guia Desenvolvedor no Word. Vá em Arquivo > Opções > Personalizar Faixa de Opções e marque Desenvolvedor no painel direito. Você também precisa definir o nível de segurança de macro para permitir macros assinadas digitalmente ou habilitar todas as macros temporariamente. Vá em Desenvolvedor > Segurança de Macro e selecione Habilitar todas as macros. Altere isso de volta após executar a macro em lote para proteger seu sistema.

O caminho da pasta na macro deve usar barras invertidas duplas ou barras normais. Exemplo: C:\\Users\\SeuNome\\Documents\\Relatorios\\. A pasta deve conter apenas os documentos que você deseja processar. Faça uma cópia de backup da pasta antes de executar a macro pela primeira vez.

Passos para Criar e Executar uma Macro VBA que Processa Todos os Documentos em uma Pasta

  1. Abra o Editor VBA
    Pressione Alt+F11 no Word. Isso abre a janela Microsoft Visual Basic for Applications.
  2. Insira um novo módulo
    No painel Project Explorer, clique com o botão direito em Normal ou no documento atual. Selecione Inserir > Módulo. Uma janela de código em branco aparece.
  3. Cole o código modelo do loop de pasta
    Copie e cole o seguinte código na janela do módulo:
    Sub ProcessAllDocsInFolder()
        Dim folderPath As String
        Dim fileName As String
        Dim doc As Document
        
        ' Altere este caminho para sua pasta de destino
        folderPath = "C:\Users\SeuNome\Documents\Relatorios\"
        
        fileName = Dir(folderPath & "docx")
        
        Application.ScreenUpdating = False
        
        Do While fileName <> ""
            Set doc = Documents.Open(folderPath & fileName)
            
            ' Seu código de macro personalizado vai aqui
            ' Exemplo: alterar todos os títulos para negrito
            ' ActiveDocument.Content.Font.Bold = True
            
            doc.Close SaveChanges:=wdSaveChanges
            fileName = Dir()
        Loop
        
        Application.ScreenUpdating = True
    End Sub
    
  4. Edite o caminho da pasta
    Substitua o caminho em folderPath = "..." pelo local real da pasta no seu computador. Use barras invertidas duplas entre os nomes das pastas.
  5. Adicione seu código de macro entre Open e Close
    Substitua a linha de comentário pelo código VBA real que você deseja executar em cada documento. Por exemplo, para adicionar uma marca d’água corporativa, insira:
        With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)
            .Shapes.AddTextEffect msoTextEffect1, "CONFIDENCIAL", "Arial", 36, _
                msoFalse, msoFalse, 0, 0
        End With
    
  6. Execute a macro
    Pressione F5 enquanto o cursor estiver dentro da sub-rotina ProcessAllDocsInFolder. O Word abrirá cada arquivo, aplicará seu código, salvará as alterações e fechará o arquivo. A tela não piscará porque ScreenUpdating está desativado.
  7. Verifique os resultados
    Abra alguns documentos da pasta para verificar se a macro aplicou as alterações corretamente. Se as alterações estiverem erradas, restaure a partir do backup e ajuste o código.

Método Alternativo: Usar uma Caixa de Diálogo de Arquivo para Selecionar a Pasta

Se preferir não codificar o caminho da pasta, use o objeto FileDialog. Isso permite que o usuário escolha uma pasta cada vez que a macro é executada. Adicione este código antes da linha Dir:

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then
        folderPath = fd.SelectedItems(1) & "\"
    Else
        Exit Sub
    End If

Essa abordagem funciona bem quando você compartilha a macro com colegas que armazenam documentos em locais diferentes.

ADVERTISEMENT

Problemas Comuns ao Executar uma Macro em Todos os Documentos de uma Pasta

O Word Bloqueia a Macro com um Aviso de Segurança

Se a macro não for executada e o Word exibir um aviso de segurança, o arquivo é de um local não confiável. Mova os documentos para uma pasta confiável. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Locais Confiáveis. Adicione o caminho da pasta à lista. O Word permitirá que macros sejam executadas em arquivos nessa pasta.

A Macro Para Após um Erro em um Arquivo

Um documento corrompido ou um arquivo aberto no Modo de Exibição Protegido pode interromper o loop. Adicione tratamento de erros dentro do loop para pular arquivos problemáticos. Insira esta linha após Set doc = Documents.Open(...):

    On Error Resume Next

Coloque On Error GoTo 0 após a linha Close para restaurar o tratamento normal de erros. Isso permite que a macro continue com o próximo arquivo mesmo se um falhar.

A Macro Não Processa Arquivos .docm ou .dotx

O padrão "docx" corresponde apenas a documentos Word padrão. Para incluir documentos habilitados para macro, altere o padrão para "docm". Para modelos, use "dotx" ou "dotm". Você também pode percorrer vários padrões aninhando a chamada Dir dentro de um loop For Each sobre uma matriz de extensões.

Loop de Pasta VBA vs. Abrir e Aplicar Manualmente

Item Loop de Pasta VBA Abrir e Aplicar Manualmente
Tempo para 100 documentos 2 a 5 minutos dependendo da complexidade da macro 60 a 90 minutos
Consistência Mesmo código executado em todos os arquivos sem erro humano Risco de pular etapas ou aplicar alterações inconsistentes
Tratamento de erros Pode pular arquivos corrompidos automaticamente Requer solução manual para cada erro
Esforço de configuração Escrever a macro uma vez Repetir os mesmos passos para cada documento
Flexibilidade Fácil modificar a macro para lidar com subpastas ou diferentes tipos de arquivo Nenhuma automação possível

Agora você pode automatizar tarefas repetitivas de formatação ou conteúdo em uma pasta inteira de documentos Word. Comece testando a macro em um pequeno conjunto de arquivos de backup. Depois que o código funcionar corretamente, aplique-o à pasta completa. Use a instrução On Error Resume Next para lidar com erros inesperados de arquivo sem interromper o processo em lote.

ADVERTISEMENT