Como Usar VBA para Converter Documentos em Lote para PDF
🔍 WiseChecker

Como Usar VBA para Converter Documentos em Lote para PDF

Converter um grande número de documentos do Word para PDF um por um é tedioso e perde tempo. Você pode automatizar essa tarefa com uma macro VBA que processa todos os arquivos de uma pasta de uma vez. Este artigo explica como escrever e executar um script VBA no Word que converte todos os arquivos .docx em uma pasta de origem para PDF em uma pasta de destino. Ao final, você terá uma macro reutilizável que economiza horas de trabalho manual.

Principais Pontos: Conversão em Lote de PDF com VBA no Word

  • Alt+F11 para abrir o editor VBA: Acesse o ambiente Visual Basic for Applications para escrever sua macro.
  • FileDialog(msoFileDialogFolderPicker): Permite que o usuário selecione a pasta de origem contendo os documentos do Word.
  • CreateObject(“Word.Application”): Abre uma instância oculta do Word para processar arquivos sem interferir na sua sessão atual.
  • Document.ExportAsFixedFormat com wdExportFormatPDF: Converte cada documento para PDF na pasta de destino.

ADVERTISEMENT

Entendendo o Recurso de Conversão em Lote com VBA

VBA (Visual Basic for Applications) é uma linguagem de programação integrada aos aplicativos do Microsoft Office. Com VBA, você pode automatizar tarefas repetitivas, como converter vários documentos do Word para PDF. A macro é executada dentro do Word e pode abrir, modificar e exportar documentos sem interação do usuário. Antes de escrever a macro, verifique se sua instalação do Word inclui suporte a VBA, que é habilitado por padrão em todas as versões desktop do Word. Você não precisa de nenhum software de terceiros. A macro usa o método ExportAsFixedFormat, que produz arquivos PDF de alta qualidade, idênticos ao processo manual de Arquivo > Salvar Como > PDF. O script percorre todos os arquivos .docx em uma pasta escolhida, abre cada um, exporta como PDF e o fecha. Você pode ajustar a pasta de destino dentro da macro ou deixar o script salvar os PDFs em uma subpasta chamada “PDF” dentro da pasta de origem.

Passos para Criar e Executar a Macro de Conversão em Lote para PDF

Siga estes passos para escrever, salvar e executar a macro VBA. A macro solicita que você selecione uma pasta e, em seguida, converte todos os arquivos .docx dessa pasta para PDF. Os arquivos PDF são salvos em uma subpasta chamada “PDF” dentro da pasta de origem. Se a subpasta não existir, a macro a cria automaticamente.

  1. Abra o editor VBA
    No Word, pressione Alt+F11 para abrir o editor Visual Basic for Applications. Se você não vir a janela Project Explorer, vá em View > Project Explorer.
  2. Insira um novo módulo
    No Project Explorer, clique com o botão direito em Normal ou no nome do seu documento e escolha Insert > Module. Uma janela de código em branco aparece.
  3. Cole o código da macro
    Copie e cole o seguinte código na janela do módulo:
    Sub BatchConvertToPDF()
        Dim fd As FileDialog
        Dim sourceFolder As String
        Dim fileName As String
        Dim doc As Document
        Dim pdfFolder As String
        Dim wordApp As Word.Application
    
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
        fd.Title = "Selecione a pasta contendo os documentos do Word"
        If fd.Show = -1 Then
            sourceFolder = fd.SelectedItems(1)
        Else
            MsgBox "Nenhuma pasta selecionada. Saindo da macro.", vbExclamation, "Cancelado"
            Exit Sub
        End If
    
        ' Garantir que o caminho da pasta termine com barra invertida
        If Right(sourceFolder, 1) <> "\" Then sourceFolder = sourceFolder & "\"
    
        ' Criar subpasta de saída PDF
        pdfFolder = sourceFolder & "PDF\"
        If Dir(pdfFolder, vbDirectory) = "" Then
            MkDir pdfFolder
        End If
    
        ' Obter o primeiro arquivo .docx
        fileName = Dir(sourceFolder & "docx")
    
        ' Criar uma instância oculta do Word
        Set wordApp = New Word.Application
        wordApp.Visible = False
        wordApp.DisplayAlerts = wdAlertsNone
    
        Do While fileName <> ""
            Set doc = wordApp.Documents.Open(sourceFolder & fileName)
            ' Converter para PDF
            doc.ExportAsFixedFormat _
                OutputFileName:=pdfFolder & Replace(fileName, ".docx", ".pdf"), _
                ExportFormat:=wdExportFormatPDF, _
                OpenAfterExport:=False, _
                OptimizeFor:=wdExportOptimizeForPrint, _
                Range:=wdExportAllDocument
            doc.Close SaveChanges:=False
            fileName = Dir()  ' Próximo arquivo
        Loop
    
        wordApp.Quit
        Set wordApp = Nothing
    
        MsgBox "Conversão concluída. Arquivos PDF salvos em: " & vbCrLf & pdfFolder, vbInformation, "Concluído"
    End Sub
    
  4. Execute a macro
    Pressione F5 enquanto o cursor estiver dentro do código da macro, ou vá para a faixa de opções do Word e clique em Exibir > Macros, selecione BatchConvertToPDF e clique em Executar. Uma caixa de diálogo de seleção de pasta aparece. Navegue até a pasta que contém seus arquivos .docx e clique em OK.
  5. Aguarde a conclusão
    A macro processa cada arquivo silenciosamente. Uma caixa de mensagem aparece quando todas as conversões são concluídas. Abra a subpasta “PDF” dentro da pasta de origem para ver os arquivos PDF gerados.

ADVERTISEMENT

Problemas Comuns e Como Evitá-los

“Erro de compilação: Tipo definido pelo usuário não definido”

Esse erro ocorre se o editor VBA não tiver uma referência à biblioteca de objetos do Word. No editor VBA, vá em Ferramentas > Referências e verifique se Microsoft Word 16.0 Object Library (ou sua versão) está marcada. Clique em OK e execute a macro novamente.

A macro converte apenas alguns arquivos e para

Se o Word encontrar um documento corrompido, a macro pode parar. Para lidar com erros, adicione a linha On Error Resume Next logo após Do While fileName <> "". Isso força a macro a pular arquivos problemáticos e continuar com o restante. Adicione um contador para registrar arquivos ignorados, se necessário.

PDFs são salvos no local errado

A macro cria uma subpasta chamada “PDF” dentro da pasta de origem. Se preferir um destino diferente, altere a linha pdfFolder = sourceFolder & "PDF\" para um caminho fixo como pdfFolder = "C:\MeusPDFs\". Certifique-se de que a pasta exista ou adicione um comando MkDir para o caminho personalizado.

A macro não aparece na lista de Macros

A macro deve ser salva no modelo Normal.dotm ou no documento ativo. Se você colou o código em um módulo dentro do documento ativo, a macro só será executada quando esse documento estiver aberto. Para tornar a macro sempre disponível, cole o código no projeto Normal (em Normal > Modules).

Conversão Manual vs Macro VBA: Principais Diferenças

Item Conversão Manual Macro VBA
Tempo para 50 documentos Aproximadamente 90 minutos Menos de 5 minutos
Interação do usuário necessária Abrir cada arquivo, clicar em Salvar Como, selecionar PDF, confirmar Selecionar pasta uma vez, a macro cuida do resto
Tratamento de erros Detecção manual de arquivos corrompidos Pode pular arquivos corrompidos automaticamente
Controle da pasta de saída Deve escolher a pasta a cada vez Subpasta fixa ou dinâmica
Nível de habilidade necessário Conhecimento básico do Word Conhecimento básico de VBA para criar a macro

Agora você pode converter centenas de documentos do Word para PDF com um único clique usando a macro VBA. Para estender a macro, adicione um segundo loop que processe arquivos .doc alterando "docx" para "doc" e adicionando uma chamada Dir separada. Para usuários avançados, modifique os parâmetros do ExportAsFixedFormat para definir opções de segurança do PDF ou reduzir o tamanho do arquivo usando wdExportOptimizeForScreen em vez de wdExportOptimizeForPrint.

ADVERTISEMENT