VBA: exportar abas do Excel em PDF em lote
Como exportar cada aba de uma planilha Excel para PDF com uma macro VBA, o que fazer com nomes de aba inválidos e quando usar o Excel para PDF no navegador.
Para exportar cada aba de uma planilha Excel como PDF de uma vez, use uma macro VBA que percorre as abas e chama o método de exportação de cada uma. O próprio Excel faz o PDF, com a área de impressão e a orientação que a planilha já tem, e a macro abaixo grava um arquivo por aba na pasta da planilha.
Abra o editor e crie o módulo
No Windows, pressione Alt+F11 para abrir o editor do VBA. No Mac, o atalho é Option+F11, e em alguns teclados Fn+Option+F11. Em seguida, no menu Inserir, escolha Módulo e cole a macro nele. Se a aba Desenvolvedor não aparece na faixa de opções, ative-a nas configurações do Excel antes.
Para que a macro fique salva, a pasta de trabalho precisa ser do tipo com macros, com extensão .xlsm. Ao salvar como .xlsx, o Excel retira o código VBA do arquivo, e a macro some. Salve uma cópia como .xlsm antes de testar.
A macro
Sub ExportarAbasEmPDF()
Dim aba As Worksheet
Dim nome As String
Dim caractere As Variant
If ActiveWorkbook.Path = "" Then
MsgBox "Salve a pasta de trabalho antes de exportar."
Exit Sub
End If
For Each aba In ActiveWorkbook.Worksheets
If aba.Visible = xlSheetVisible Then
nome = aba.Name
For Each caractere In Array("\", "/", ":", "*", "?", """", "<", ">", "|")
nome = Replace(nome, caractere, "-")
Next caractere
aba.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & Application.PathSeparator & nome & ".pdf", _
Quality:=xlQualityStandard, OpenAfterPublish:=False
End If
Next aba
MsgBox "PDFs gravados em " & ActiveWorkbook.Path
End SubA macro tem três partes simples. Primeiro, confere que a planilha já foi salva, porque ActiveWorkbook.Path fica vazio numa pasta de trabalho nova. Depois, percorre as abas com um laço For Each, pulando as ocultas, e troca por hífen os caracteres que o Windows não aceita em nome de arquivo. Por último, chama ExportAsFixedFormat no objeto da aba, com o tipo xlTypePDF e o nome montado com o nome da aba. Se você quer um PDF com as abas todas juntas, o mesmo método roda sobre a pasta de trabalho inteira, sem o laço.
Nomes de aba que não viram arquivo
O nome da aba vira o nome do arquivo, e aí surgem os problemas. Barra, barra invertida, dois-pontos, asterisco, ponto de interrogação, aspas, menor que, maior que e barra vertical não são permitidos em nome de arquivo. É por isso que a macro aplica Replace a cada um deles: a aba Vendas/2026 vira Vendas-2026.pdf, e nenhum arquivo é recusado. Duas abas cujos nomes só diferem por esses caracteres geram o mesmo nome, e a segunda sobrescreve a primeira, então confira os nomes antes.
| Situação | Caminho recomendado | Motivo |
|---|---|---|
| Excel instalado, PDF por aba | Macro com ExportAsFixedFormat | Usa a configuração de impressão da planilha |
| Uma pasta de trabalho, PDF único | Exportar a pasta inteira | Sem laço, um arquivo só |
| Sem Office instalado | Excel para PDF no navegador | Aceita XLS, XLSX, ODS e CSV |
| Vários arquivos sem macro | Enviar todos de uma vez | O resultado vem em um ZIP |
Configuração de impressão decide o resultado
O Excel exporta o que a planilha mandaria para a impressora. Uma aba larga, sem ajuste de página, pode sair dividida em várias folhas, com colunas indo para a folha seguinte. Esse é o comportamento que a macro reproduz. Antes de rodar em lote, abra a aba, veja a visualização de impressão e ajuste a área, a orientação e a escala. Feito isso uma vez, a macro segue o mesmo padrão em todos os PDFs. O guia Excel em PDF numa página mostra como ajustar a planilha, e o de Excel para PDF que cortou colunas trata do corte lateral. Se o PDF de cada aba ficar pesado, o comprimir PDF reduz as imagens, se houver. Para exportar só a aba de resultado de uma planilha de custos, sem as abas internas, veja planilha de custos em PDF.
Se você não quer mexer na configuração de cada aba, o Excel para PDF do AjustaPDF tem a opção de cada aba inteira numa página só, ajustada ao tamanho dela. Essa opção evita a tabela cortada, mas a página resultante não é a de uma impressão em A4, então escolha conforme o uso.
Segurança das macros
O Excel bloqueia macros por padrão, e isso é bom. Antes de habilitar, leia o código que vai rodar ou peça a alguém que leia. Uma macro de outra pessoa pode fazer mais do que exportar PDF. Se a planilha veio de um e-mail desconhecido, não habilite o conteúdo.
Para uma planilha que contém dados de clientes ou de funcionários, a exportação gera arquivos com os mesmos dados. Guarde a pasta de saída com o mesmo cuidado da planilha, e apague os PDFs temporários quando não forem mais necessários. Para o mesmo problema no Google Sheets, veja exportar Google Sheets em PDF numa página só.
Checklist antes de rodar em lote
- Salve uma cópia .xlsm e teste nela, não no original.
- Confira a visualização de impressão de duas ou três abas.
- Veja se há abas com nomes que ficam iguais depois da troca de caracteres.
- Abra um dos PDFs gerados e confira colunas, cabeçalhos e páginas.
Perguntas frequentes
Como exportar todas as abas de uma planilha Excel para PDF com VBA?
Abra o editor do VBA, crie um módulo e use um laço For Each sobre ActiveWorkbook.Worksheets, chamando ExportAsFixedFormat com o tipo xlTypePDF em cada aba. Cada aba vira um arquivo PDF na pasta que você escolher. O resultado segue a área de impressão e a orientação que a planilha já tem.
A macro de exportar PDF funciona no Excel para Mac?
Em geral, sim, porque o Excel para Mac tem VBA e o método ExportAsFixedFormat. O separador de pastas muda, então use Application.PathSeparator em vez de uma barra fixa. Teste com uma cópia da planilha, porque as permissões de pasta do macOS podem pedir confirmação na primeira vez.
Por que a macro falha em uma aba com nome com barra ou dois-pontos?
Porque esses caracteres não são permitidos em nome de arquivo. Antes de montar o caminho, troque a barra e os dois-pontos do nome da aba por hífen, com a função Replace. Assim o arquivo é criado, e você sabe qual aba corresponde a cada PDF.
Posso usar a exportação do Excel se não tenho o Office instalado?
Não, porque o VBA depende do próprio Excel. Sem o Office, a alternativa é converter a planilha no navegador com a ferramenta de Excel para PDF do AjustaPDF, que aceita XLS, XLSX, ODS e CSV e tem a opção de cada aba caber numa página só.