Como Mesclar Vários PDFs Usando Excel VBA

Este artigo explica como mesclar vários arquivos PDF em um único usando Excel VBA. Automatizando este processo, você pode economizar esforço e trabalhar de forma eficiente. Este método é particularmente útil ao lidar com um grande número de PDFs. Siga os passos abaixo para criar e usar facilmente uma macro de mesclagem de PDF.

Índice

Ferramentas Necessárias e Preparação

Para mesclar PDFs usando uma macro VBA, é necessário alguma preparação. Verifique as ferramentas e passos abaixo.

Instalando Ferramentas de Mesclagem de PDF

Para mesclagem de PDF, é necessária uma biblioteca de PDF. Aqui, apresentamos métodos usando Adobe Acrobat ou PDFtk.

Para Adobe Acrobat
  1. Instale o Adobe Acrobat. É necessário uma licença para Adobe Acrobat Pro.
  2. Defina a biblioteca de objetos do Acrobat como uma referência no VBA.
  • Abra o editor VBA no Excel (Alt + F11).
  • Selecione “Referências” no menu “Ferramentas”.
  • Marque “Adobe Acrobat xx.x Type Library” e clique em “OK”.
Para PDFtk
  1. Instale o PDFtk. Você pode usar o PDFtk Server gratuito.
  2. Adicione o diretório de instalação do PDFtk ao PATH do sistema.
  • Edite as variáveis de ambiente do sistema Windows e adicione o caminho de instalação do PDFtk ao “Path”.

Configuração da Macro

  1. Abra um arquivo Excel e abra o editor VBA com Alt + F11.
  2. Insira um novo módulo (Menu “Inserir” → “Módulo”).
  3. Cole o seguinte código no módulo.

Você agora está pronto para usar a macro VBA. Em seguida, passaremos para o código VBA específico e sua explicação.

Explicação do Código para Mesclar PDFs com VBA

Aqui, apresentamos o código VBA usando Adobe Acrobat. Ao usar PDFtk, você pode seguir etapas semelhantes, mas são necessárias operações de linha de comando.

Código VBA Usando Adobe Acrobat

Primeiro, aqui está o código para mesclar PDFs usando VBA.

Sub MergePDFs_Acrobat()
    Dim AcroApp As Object
    Dim PartDocs As Object
    Dim CombinedDoc As Object
    Dim Pdf1 As String
    Dim Pdf2 As String
    Dim OutputPdf As String

    ' Set the path for the PDF files
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Create the Adobe Acrobat object
    Set AcroApp = CreateObject("AcroExch.App")
    Set PartDocs = CreateObject("AcroExch.PDDoc")

    ' Open the first PDF
    If PartDocs.Open(Pdf1) Then
        ' Create a new PDF document with the first PDF
        Set CombinedDoc = PartDocs

        ' Open the second PDF
        If PartDocs.Open(Pdf2) Then
            ' Merge the second PDF
            If CombinedDoc.InsertPages(CombinedDoc.GetNumPages() - 1, PartDocs, 0, PartDocs.GetNumPages(), 0) Then
                ' Save the merged PDF
                If Not CombinedDoc.Save(1, OutputPdf) Then
                    MsgBox "Failed to save the merged PDF."
                End If
            Else
                MsgBox "Failed to insert pages."
            End If

            ' Close the second PDF
            PartDocs.Close
        Else
            MsgBox "Failed to open the second PDF."
        End If

        ' Close the first PDF
        CombinedDoc.Close
    Else
        MsgBox "Failed to open the first PDF."
    End If

    ' Exit Acrobat
    AcroApp.Exit
    Set AcroApp = Nothing
    Set PartDocs = Nothing
    Set CombinedDoc = Nothing
End Sub

Explicação do Código

  • Dim AcroApp As Object: Cria um objeto para o aplicativo Adobe Acrobat.
  • Dim PartDocs As Object: Cria um objeto para gerenciar documentos PDF individuais.
  • Dim CombinedDoc As Object: Cria um objeto para gerenciar o documento PDF combinado.
  • Pdf1, Pdf2, OutputPdf: Define os caminhos para os arquivos PDF a serem mesclados e o arquivo PDF de saída.
  • Set AcroApp = CreateObject("AcroExch.App"): Cria uma instância do aplicativo Adobe Acrobat.
  • Set PartDocs = CreateObject("AcroExch.PDDoc"): Cria uma instância para documentos PDF individuais.
  • PartDocs.Open(Pdf1), PartDocs.Open(Pdf2): Abre os arquivos PDF.
  • CombinedDoc.InsertPages: Insere o segundo PDF no primeiro PDF.
  • CombinedDoc.Save: Salva o PDF mesclado.
  • AcroApp.Exit: Encerra o aplicativo Acrobat.

Código VBA Usando PDFtk

Em seguida, aqui está o código VBA para usar PDFtk.

Sub MergePDFs_PDFtk()
    Dim Pdf1 As String
    Dim Pdf2 As String
    Dim OutputPdf As

 String
    Dim Command As String

    ' Set the path for the PDF files
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Create the PDFtk command
    Command = "pdftk " & Pdf1 & " " & Pdf2 & " cat output " & OutputPdf

    ' Run the shell command to merge the PDFs
    Shell Command, vbNormalFocus
End Sub

Explicação do Código

  • Pdf1, Pdf2, OutputPdf: Define os caminhos para os arquivos PDF a serem mesclados e o arquivo PDF de saída.
  • Command: Cria o comando PDFtk. O comando pdftk mescla os arquivos PDF especificados e gera o arquivo de saída.
  • Shell Command, vbNormalFocus: Executa o comando shell para mesclar os PDFs.

Agora você entende como mesclar vários PDFs usando Excel VBA. Em seguida, explicaremos os passos para executar a macro.

Passos para Executar a Macro

Aqui, explicaremos os passos para executar a macro no Excel usando o código VBA apresentado anteriormente para mesclar PDFs.

Configuração e Execução da Macro

  1. Abra o arquivo Excel
    Abra o arquivo Excel onde você deseja executar o processo de mesclagem.
  2. Abra o editor VBA
    Pressione Alt + F11 para abrir o editor VBA.
  3. Insira um novo módulo
    Selecione “Inserir” no menu e escolha “Módulo” para inserir um novo módulo.
  4. Cole o código
    Cole o seguinte código no novo módulo. Aqui mostramos um exemplo usando Adobe Acrobat, mas se estiver usando PDFtk, use o código PDFtk apresentado anteriormente.
Sub MergePDFs_Acrobat()
    Dim AcroApp As Object
    Dim PartDocs As Object
    Dim CombinedDoc As Object
    Dim Pdf1 As String
    Dim Pdf2 As String
    Dim OutputPdf As String

    ' Set the path for the PDF files
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Create the Adobe Acrobat object
    Set AcroApp = CreateObject("AcroExch.App")
    Set PartDocs = CreateObject("AcroExch.PDDoc")

    ' Open the first PDF
    If PartDocs.Open(Pdf1) Then
        ' Create a new PDF document with the first PDF
        Set CombinedDoc = PartDocs

        ' Open the second PDF
        If PartDocs.Open(Pdf2) Then
            ' Merge the second PDF
            If CombinedDoc.InsertPages(CombinedDoc.GetNumPages() - 1, PartDocs, 0, PartDocs.GetNumPages(), 0) Then
                ' Save the merged PDF
                If Not CombinedDoc.Save(1, OutputPdf) Then
                    MsgBox "Failed to save the merged PDF."
                End If
            Else
                MsgBox "Failed to insert pages."
            End If

            ' Close the second PDF
            PartDocs.Close
        Else
            MsgBox "Failed to open the second PDF."
        End If

        ' Close the first PDF
        CombinedDoc.Close
    Else
        MsgBox "Failed to open the first PDF."
    End If

    ' Exit Acrobat
    AcroApp.Exit
    Set AcroApp = Nothing
    Set PartDocs = Nothing
    Set CombinedDoc = Nothing
End Sub
  1. Execute a macro
  • Feche o editor VBA e volte para o Excel.
  • Pressione Alt + F8 para abrir a caixa de diálogo “Macro”.
  • Selecione “MergePDFs_Acrobat” e clique em “Executar”.

6.Verifique o resultado da mesclagem do PDF
Verifique se o arquivo PDF mesclado foi criado no caminho do arquivo de saída especificado (por exemplo, C:\path\to\your\output\merged.pdf).

Usando PDFtk

  1. Cole o código VBA
    Se estiver usando PDFtk, cole o seguinte código no módulo.
Sub MergePDFs_PDFtk()
    Dim Pdf1 As String
    Dim Pdf2 As String
    Dim OutputPdf As String
    Dim Command As String

    ' Set the path for the PDF files
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Create the PDFtk command
    Command = "pdftk " & Pdf1 & " " & Pdf2 & " cat output " & OutputPdf

    ' Run the shell command to merge the PDFs
    Shell Command, vbNormalFocus
End Sub
  1. Execute a macro
    Siga os mesmos passos para executar a macro como descrito anteriormente, mas use o código PDFtk.

Com estes passos, você pode mesclar vários arquivos PDF usando Excel VBA. Em seguida, abordaremos problemas comuns e suas soluções.

Solução de Problemas

Aqui estão problemas comuns e soluções ao mesclar PDFs usando Excel VBA.

1. Adobe Acrobat não está instalado

Problema: Se o Adobe Acrobat não estiver instalado, ocorre um erro com CreateObject("AcroExch.App").
Solução: Instale o Adobe Acrobat Pro. Esta operação não pode ser realizada com o Adobe Reader gratuito.

2. Caminho do arquivo incorreto

Problema: Se o caminho do arquivo PDF especificado estiver incorreto, ocorre um erro com PartDocs.Open(Pdf1) ou PartDocs.Open(Pdf2).
Solução: Verifique se o caminho está correto e se os arquivos existem nos caminhos especificados.

3. Falha na mesclagem do PDF

Problema: CombinedDoc.InsertPages pode falhar ao inserir páginas.
Solução: Verifique se os PDFs a serem mesclados não estão corrompidos. Se os PDFs tiverem um número extremamente grande de páginas, problemas de memória podem ocorrer. Tente mesclar arquivos PDF menores.

4. Falha ao salvar o PDF

Problema: Salvar o PDF mesclado com CombinedDoc.Save pode falhar.
Solução: Verifique se a pasta de destino de salvamento tem permissões de gravação. Além disso, verifique se não existe um arquivo existente com o mesmo nome e tente salvar com um nome diferente.

5. Comando PDFtk não executa

Problema: Se o comando PDFtk não executar corretamente, ocorre um erro com Shell Command, vbNormalFocus.
Solução: Verifique se o PDFtk está instalado corretamente e adicionado ao PATH do sistema. Além disso, tente executar o comando PDFtk diretamente no prompt de comando para verificar se funciona corretamente.

6. Configurações de referência incorretas

Problema: Se a biblioteca de objetos do Adobe Acrobat não estiver definida como referência, ocorre um erro com CreateObject("AcroExch.App").
Solução: No editor VBA, selecione “Referências” no menu “Ferramentas”, marque “Adobe Acrobat xx.x Type Library” e clique em “OK”.

7. Outros erros de VBA

Problema: Para outros erros de VBA, entre no modo de depuração para identificar a causa.
Solução: No editor VBA, pressione F8 para passar pelo código e identificar a linha que está causando o erro. Investigue a mensagem de erro para uma solução apropriada.

Consulte este guia de solução de problemas para resolver problemas e mesclar PDFs sem problemas. Em seguida, resumiremos os passos discutidos.

Conclusão

Explicamos como mesclar vários PDFs usando Excel VBA. Seguindo estes passos, você pode automatizar as tarefas manuais de mesclagem de PDF, melhorando a eficiência. Aqui estão os pontos principais:

  • Prepare as ferramentas necessárias: Instale e configure o Adobe Acrobat ou PDFtk.
  • Crie o código VBA: Crie o código VBA para mesclar PDFs usando Adobe Acrobat ou PDFtk.
  • Execute a macro: Execute a macro VBA no Excel para mesclar PDFs.
  • Solução de problemas: Resolva problemas comuns e garanta a mesclagem suave dos PDFs.

Seguindo estes passos, você pode facilmente mesclar vários PDFs e melhorar significativamente a eficiência do trabalho. Aproveite ao máximo a automação VBA para simplificar suas tarefas diárias.

Índice