
Renomeando 500 PDFs com uma macro VBA do Excel
Transforme o Excel em um gerenciador de arquivos poderoso e renomeie lote de 500 PDFs em segundos usando o VBA nativo.

Imagine a seguinte situação: você recebeu uma pasta zipada de um cliente contendo 500 notas fiscais em PDF. O problema é que todos os arquivos seguem um padrão inútil como "Scan001.pdf", "Scan002.pdf" e assim por diante. Para organizar isso no sistema da sua empresa, você precisa padronizar os nomes para "NF-12345-EmpresaX.pdf", "NF-12346-EmpresaX.pdf". Fazer isso manualmente, um por um, clicando em F2 no Windows Explorer, é uma sentença de quase três horas de trabalho repetitivo e propenso a erro de digitação.
A maioria das pessoas desconhece que o Microsoft Excel, que já está aberto na sua tela, possui uma linguagem de programação nativa capaz de conversar diretamente com o sistema de arquivos do Windows. Não precisamos instalar Python, nem baixar scripts complexos da internet, nem usar softwares de renomeação em massa que costumam ter interfaces confusas. O VBA (Visual Basic for Applications) está lá, pronto para eliminar essa tarefa burocrática em menos de cinco minutos de configuração.
Já discutimos anteriormente por aqui sobre 5 atalhos de teclado do Windows 11 que substituem cliques de mouse no gerenciador de janelas, mas para este volume de dados, atalhos não resolvem. Precisamos de automação. Vou te mostrar como montei uma solução robusta para isso recentemente, cuidando para que o código não quebre se o arquivo estiver em uso.
Preparando o terreno: a lista de controle
Antes de escrever qualquer linha de código, precisamos alimentar o Excel com a verdade sobre os arquivos. O erro clássico é tentar renomear arquivos baseando-se apenas em uma suposição de nome. A macro precisa saber exatamente "o que é" e "para onde vai".
Abra uma nova planilha e configure duas colunas principais:
- Coluna A (Nome Atual): O nome exato do arquivo conforme está salvo no Windows (ex:
Scan001.pdf). - Coluna B (Novo Nome): O nome que você quer aplicar (ex:
NF-2026-001.pdf).
Preencha algumas linhas de teste. Se você já tiver a lista de nomes atuais, use um truque rápido para não digitar nada: abra a pasta dos arquivos no Windows Explorer, selecione todos (Ctrl+A), copie (Ctrl+C) e cole (Ctrl+V) diretamente na Coluna A do Excel. O Windows cola apenas os nomes dos arquivos, ignorando o caminho da pasta.
Na célula D1, vamos colocar o caminho da pasta onde esses arquivos estão. Isso é crucial para a portabilidade da sua macro. Digite algo como C:\Usuarios\Felipe\Documentos\NFs_Pendente\. Certifique-se de que a barra invertida (\) esteja no final do caminho. Essa barra é o detalhe específico que faz o caminho funcionar como um diretório e não como um prefixo de arquivo.
A lógica por trás da automação de arquivos
Enquanto administradores de sistemas debatedores Python ou PowerShell: qual script usar para automatizar limpeza de arquivos temporários em servidor?, o usuário comum de Office ganha tempo usando o que já domina. O VBA possui um comando chamado Name que faz exatamente o que a função "Renomear" do Windows faz, mas em velocidade de processamento.
A lógica da nossa macro será simples:
- Ler o caminho da pasta (Célula D1).
- Descer linha por linha da planilha.
- Verificar se o arquivo da Coluna A existe na pasta.
- Se existir, mudar o nome para o que está na Coluna B.
- Se não existir, avisar que houve um erro (arquivo faltante ou nome errado na planilha) e parar.
O grande segredo aqui não é a complexidade do código, mas a validação. Eu sempre recomendo adicionar uma verificação de existência do arquivo antes de tentar renomeá-lo. Sem isso, se você escrever "Scan500.pdf" na planilha, mas o arquivo se chama "Scan0500.pdf", a macro vai falhar e você pode perder o rastreio de onde parou.

Escrevendo o código no editor VBA
Com a planilha preenchida, vamos acionar o motor. No Excel, pressione as teclas Alt + F11. Isso abrirá o Editor do Visual Basic. Não se assuste com a janela cinza; é apenas um ambiente de texto.
No menu superior, clique em Inserir > Módulo. Uma caixa branca aparecerá à direita. É aqui que vamos colar o script. Copie o código abaixo exatamente como está:
Sub RenomearLotePDF()
Dim CaminhoPasta As String
Dim NomeAtual As String
Dim NovoNome As String
Dim Linha As Long
Dim ArquivoExiste As String
' Define a pasta baseada na célula D1
CaminhoPasta = ThisWorkbook.Sheets("Planilha1").Range("D1").Value
' Verifica se o caminho termina com barra, se não, adiciona
If Right(CaminhoPasta, 1) <> "\" Then CaminhoPasta = CaminhoPasta & "\"
Linha = 2 ' Começa na linha 2 (assumindo cabeçalho na 1)
Application.ScreenUpdating = False ' Deixa a tela estática para ser mais rápido
Do While ThisWorkbook.Sheets("Planilha1").Cells(Linha, 1).Value <> ""
' Monta os caminhos completos
NomeAtual = CaminhoPasta & ThisWorkbook.Sheets("Planilha1").Cells(Linha, 1).Value
NovoNome = CaminhoPasta & ThisWorkbook.Sheets("Planilha1").Cells(Linha, 2).Value
' Verifica se o arquivo original existe antes de tentar renomear
ArquivoExiste = Dir(NomeAtual)
If ArquivoExiste <> "" Then
' O comando Name faz a mágica acontecer
Name NomeAtual As NovoNome
ThisWorkbook.Sheets("Planilha1").Cells(Linha, 3).Value = "Renomeado com sucesso"
Else
ThisWorkbook.Sheets("Planilha1").Cells(Linha, 3).Value = "ERRO: Arquivo não encontrado"
End If
Linha = Linha + 1
Loop
Application.ScreenUpdating = True
MsgBox "Processo concluído! Verifique a coluna C para o status.", vbInformation
End Sub
Repare na linha Application.ScreenUpdating = False. Isso é um ajuste de performance importante. Quando o VBA roda, se ele não travar a atualização da tela, o Excel vai ficar piscando a cada linha processada, o que torna a operação com 500 linhas muito mais lenta. Travamos a visão, processamos tudo na memória e devolvemos o controle no final.
Executando e validando os resultados
Feche a janela do VBA e volte para o Excel. Antes de rodar, faça um teste de sanidade: selecione as primeiras 5 linhas da sua planilha e recorte (Ctrl+X) e cole em outra aba só para garantir. Se der algo errado, você tem um backup dos nomes originais. Lembre-se de colar de volta na aba principal antes de continuar.
Pressione Alt + F8. A caixa de macros deve aparecer listando RenomearLotePDF. Selecione e clique em Executar.
O Excel vai rodar em silêncio por alguns segundos. Depois, uma caixa de mensagem aparecerá dizendo "Processo concluído!". Vá até a sua pasta no Windows Explorer. Se você estiver com a pasta aberta, aperte F5 para atualizar a visualização. Verá que os arquivos agora possuem os nomes da Coluna B.
Volte para o Excel e olhe a Coluna C, que criamos no código para dar feedback (Status). Se alguma linha tiver "ERRO: Arquivo não encontrado", verifique se você digitou o nome errado na Coluna A ou se o arquivo realmente não estava na pasta especificada em D1.
O que fazer se o arquivo estiver aberto?
Existe um cenário específico onde esse script vai falhar, e não é culpa do código. Se um dos 500 PDFs estiver aberto no Adobe Acrobat ou no leitor do Chrome, o Windows bloqueia a alteração do nome pois o arquivo está "trancado" por outro processo. O VBA vai lançar um erro de "Permissão negada" e parar a execução abruptamente.
Se isso acontecer, feche todos os leitores de PDF e execute a macro novamente. Para situações futuras onde você sabe que arquivos podem estar em uso, um programador mais avançado adotaria manipulação de erros (On Error Resume Next), mas para um controle de produtividade inicial, é mais honesto deixar o erro aparecer para você saber exatamente onde está o bloqueio.
Essa mesma lógica de conectar células do Excel a comandos de sistema foi o que usei para reduzir meu tempo de resposta em 30% criando modelos de e-mail com variáveis no Outlook. A beleza dessa abordagem é que você não precisa ser um desenvolvedor, apenas entender que o Office pode orquestrar ações fora dele.
Preservando o conhecimento e o padrão
Agora que você criou essa automação, salve o arquivo do Excel como "Pasta de Trabalho Habilitada para Macro do Excel" (.xlsm). Se você salvar como .xlsx padrão, o código será apagado na hora de fechar. Amanhã, se chegar outro lote de 500 arquivos de outro cliente, você só precisa limpar as colunas A e B, colar os novos dados e rodar a macro de novo.
Reflita sobre o ganho aqui: uma tarefa que levaria 3 horas de foco intenso e entediante agora leva 5 minutos de preparação de dados. O VBA não é apenas uma ferramenta de planilhas, é uma interface de controle para o Windows. O limite passa a ser a sua criatividade em conectar as células aos comandos do sistema operacional.

