Hoe Meerdere PDF’s Samenvoegen met Excel VBA

Dit artikel legt uit hoe je meerdere PDF-bestanden kunt samenvoegen tot één bestand met behulp van Excel VBA. Door dit proces te automatiseren, kun je moeite besparen en efficiënt werken. Deze methode is vooral nuttig bij het omgaan met een groot aantal PDF’s. Volg de onderstaande stappen om eenvoudig een PDF-samenvoegmacro te maken en te gebruiken.

Inhoudsopgave

Benodigde Tools en Voorbereiding

Om PDF’s samen te voegen met een VBA-macro, is enige voorbereiding vereist. Controleer de onderstaande tools en stappen.

PDF-samenvoegtools Installeren

Voor het samenvoegen van PDF’s is een PDF-bibliotheek nodig. Hier introduceren we methoden met behulp van Adobe Acrobat of PDFtk.

Voor Adobe Acrobat
  1. Installeer Adobe Acrobat. Een licentie voor Adobe Acrobat Pro is vereist.
  2. Stel de Acrobat-objectbibliotheek in als referentie in VBA.
  • Open de VBA-editor in Excel (Alt + F11).
  • Selecteer “Referenties” in het “Extra” menu.
  • Vink “Adobe Acrobat xx.x Type Library” aan en klik op “OK”.
Voor PDFtk
  1. Installeer PDFtk. Je kunt de gratis PDFtk Server gebruiken.
  2. Voeg de PDFtk-installatiemap toe aan het systeem-PATH.
  • Bewerk de omgevingsvariabelen van het Windows-systeem en voeg het PDFtk-installatiepad toe aan het “Path”.

Macro Instellen

  1. Open een Excel-bestand en open de VBA-editor met Alt + F11.
  2. Voeg een nieuwe module in (Menu “Invoegen” → “Module”).
  3. Plak de volgende code in de module.

Je bent nu klaar om de VBA-macro te gebruiken. Vervolgens gaan we verder met de specifieke VBA-code en de uitleg ervan.

Uitleg van de Code om PDF’s samen te voegen met VBA

Hier introduceren we VBA-code met behulp van Adobe Acrobat. Bij gebruik van PDFtk kun je vergelijkbare stappen volgen, maar zijn opdrachtregeloperaties vereist.

VBA-code met behulp van Adobe Acrobat

Hier is eerst de code om PDF’s samen te voegen met 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

Uitleg van de Code

  • Dim AcroApp As Object: Creëert een object voor de Adobe Acrobat toepassing.
  • Dim PartDocs As Object: Creëert een object om individuele PDF-documenten te beheren.
  • Dim CombinedDoc As Object: Creëert een object om het gecombineerde PDF-document te beheren.
  • Pdf1, Pdf2, OutputPdf: Stel de paden in voor de PDF-bestanden die moeten worden samengevoegd en het uitvoer-PDF-bestand.
  • Set AcroApp = CreateObject("AcroExch.App"): Creëert een instantie van de Adobe Acrobat toepassing.
  • Set PartDocs = CreateObject("AcroExch.PDDoc"): Creëert een instantie voor individuele PDF-documenten.
  • PartDocs.Open(Pdf1), PartDocs.Open(Pdf2): Opent de PDF-bestanden.
  • CombinedDoc.InsertPages: Voegt de tweede PDF in de eerste PDF.
  • CombinedDoc.Save: Slaat de samengevoegde PDF op.
  • AcroApp.Exit: Sluit de Acrobat toepassing af.

VBA-code met behulp van PDFtk

Vervolgens, hier is de VBA-code voor het gebruik van 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

Uitleg van de Code

  • Pdf1, Pdf2, OutputPdf: Stel de paden in voor de PDF-bestanden die moeten worden samengevoegd en het uitvoer-PDF-bestand.
  • Command: Creëert het PDFtk-commando. Het pdftk commando voegt de gespecificeerde PDF-bestanden samen en genereert het uitvoerbestand.
  • Shell Command, vbNormalFocus: Voert het shell-commando uit om de PDF’s samen te voegen.

Nu begrijp je hoe je meerdere PDF’s kunt samenvoegen met Excel VBA. Vervolgens leggen we de stappen uit om de macro uit te voeren.

Stappen om de Macro uit te Voeren

Hier leggen we de stappen uit om de macro uit te voeren in Excel met behulp van de eerder geïntroduceerde VBA-code om PDF’s samen te voegen.

Macro Instellen en Uitvoeren

  1. Open het Excel-bestand
    Open het Excel-bestand waarin je het samenvoegproces wilt uitvoeren.
  2. Open de VBA-editor
    Druk op Alt + F11 om de VBA-editor te openen.
  3. Voeg een nieuwe module in
    Selecteer “Invoegen” in het menu en kies “Module” om een nieuwe module in te voegen.
  4. Plak de code
    Plak de volgende code in de nieuwe module. Hier laten we een voorbeeld zien met Adobe Acrobat, maar bij gebruik van PDFtk, gebruik de eerder geïntroduceerde PDFtk-code.
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. Voer de macro uit
  • Sluit de VBA-editor en keer terug naar Excel.
  • Druk op Alt + F8 om het “Macro” dialoogvenster te openen.
  • Selecteer “MergePDFs_Acrobat” en klik op “Uitvoeren”.

6.Controleer het resultaat van het samenvoegen van de PDF
Controleer of het samengevoegde PDF-bestand is aangemaakt op het opgegeven uitvoerbestandpad (bijv. C:\path\to\your\output\merged.pdf).

Gebruik van PDFtk

  1. Plak de VBA-code
    Als je PDFtk gebruikt, plak dan de volgende code in de module.
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. Voer de macro uit
    Volg dezelfde stappen om de macro uit te voeren zoals eerder beschreven, maar gebruik de PDFtk-code.

Met deze stappen kun je meerdere PDF-bestanden samenvoegen met Excel VBA. Vervolgens behandelen we veelvoorkomende problemen en hun oplossingen.

Probleemoplossing

Hier zijn veelvoorkomende problemen en oplossingen bij het samenvoegen van PDF’s met Excel VBA.

1. Adobe Acrobat is niet geïnstalleerd

Probleem: Als Adobe Acrobat niet is geïnstalleerd, treedt er een fout op bij CreateObject("AcroExch.App").
Oplossing: Installeer Adobe Acrobat Pro. Deze bewerking kan niet worden uitgevoerd met de gratis Adobe Reader.

2. Onjuist bestandspad

Probleem: Als het opgegeven PDF-bestandspad onjuist is, treedt er een fout op bij PartDocs.Open(Pdf1) of PartDocs.Open(Pdf2).
Oplossing: Controleer of het pad correct is en dat de bestanden zich op de opgegeven paden bevinden.

3. PDF-samenvoegen mislukt

Probleem: CombinedDoc.InsertPages kan mislukken bij het invoegen van pagina’s.
Oplossing: Controleer of de PDF’s die moeten worden samengevoegd niet beschadigd zijn. Als de PDF’s een extreem groot aantal pagina’s hebben, kunnen er geheugenproblemen optreden. Probeer kleinere PDF-bestanden samen te voegen.

4. PDF opslaan mislukt

Probleem: Het opslaan van de samengevoegde PDF met CombinedDoc.Save kan mislukken.
Oplossing: Zorg ervoor dat de doelmap schrijfbevoegdheden heeft. Controleer ook of er geen bestaand bestand met dezelfde naam is en probeer op te slaan met een andere naam.

5. PDFtk-commando wordt niet uitgevoerd

Probleem: Als het PDFtk-commando niet correct wordt uitgevoerd, treedt er een fout op bij Shell Command, vbNormalFocus.
Oplossing: Zorg ervoor dat PDFtk correct is geïnstalleerd en is toegevoegd aan het systeem-PATH. Probeer ook het PDFtk-commando direct in de opdrachtprompt uit te voeren om te controleren of het correct werkt.

6. Onjuiste referentie-instellingen

Probleem: Als de Adobe Acrobat-objectbibliotheek niet is ingesteld als referentie, treedt er een fout op bij CreateObject("AcroExch.App").
Oplossing: Selecteer in de VBA-editor “Referenties” in het “Extra” menu, vink “Adobe Acrobat xx.x Type Library” aan en klik op “OK”.

7. Andere VBA-fouten

Probleem: Voor andere VBA-fouten, ga in debugmodus om de oorzaak te achterhalen.
Oplossing: Druk in de VBA-editor op F8 om door de code te stappen en de regel te identificeren die de fout veroorzaakt. Onderzoek het foutbericht voor een passende oplossing.

Raadpleeg deze gids voor probleemoplossing om problemen op te lossen en soepel PDF’s samen te voegen. Vervolgens zullen we de besproken stappen samenvatten.

Conclusie

We hebben uitgelegd hoe je meerdere PDF’s kunt samenvoegen met Excel VBA. Door deze stappen te volgen, kun je de handmatige taken voor het samenvoegen van PDF’s automatiseren, waardoor de efficiëntie wordt verbeterd. Hier zijn de belangrijkste punten:

  • Bereid de benodigde tools voor: Installeer en stel Adobe Acrobat of PDFtk in.
  • Maak de VBA-code: Maak VBA-code om PDF’s samen te voegen met behulp van Adobe Acrobat of PDFtk.
  • Voer de macro uit: Voer de VBA-macro uit in Excel om PDF’s samen te voegen.
  • Probleemoplossing: Los veelvoorkomende problemen op en zorg voor een soepele PDF-samenvoeging.

Door deze stappen te volgen, kun je eenvoudig meerdere PDF’s samenvoegen en de efficiëntie van je werk aanzienlijk verbeteren. Maak optimaal gebruik van VBA-automatisering om je dagelijkse taken te stroomlijnen.

Inhoudsopgave