Comment fusionner plusieurs fichiers PDF en utilisant Excel VBA

Cet article explique comment fusionner plusieurs fichiers PDF en un seul en utilisant Excel VBA. En automatisant ce processus, vous pouvez économiser des efforts et travailler efficacement. Cette méthode est particulièrement utile lorsque vous traitez un grand nombre de fichiers PDF. Suivez les étapes ci-dessous pour créer et utiliser facilement une macro de fusion de PDF.

Sommaire

Outils requis et préparation

Pour fusionner des fichiers PDF à l’aide d’une macro VBA, une certaine préparation est nécessaire. Vérifiez les outils et les étapes ci-dessous.

Installation des outils de fusion PDF

Pour la fusion de PDF, une bibliothèque PDF est nécessaire. Ici, nous introduisons des méthodes utilisant Adobe Acrobat ou PDFtk.

Pour Adobe Acrobat
  1. Installez Adobe Acrobat. Une licence pour Adobe Acrobat Pro est requise.
  2. Définissez la bibliothèque d’objets Acrobat comme référence dans VBA.
  • Ouvrez l’éditeur VBA dans Excel (Alt + F11).
  • Sélectionnez « Références » dans le menu « Outils ».
  • Cochez « Adobe Acrobat xx.x Type Library » et cliquez sur « OK ».
Pour PDFtk
  1. Installez PDFtk. Vous pouvez utiliser le PDFtk Server gratuit.
  2. Ajoutez le répertoire d’installation de PDFtk au chemin système (PATH).
  • Modifiez les variables d’environnement du système Windows et ajoutez le chemin d’installation de PDFtk au « Path ».

Configuration de la macro

  1. Ouvrez un fichier Excel et ouvrez l’éditeur VBA avec Alt + F11.
  2. Insérez un nouveau module (Menu « Insertion » → « Module »).
  3. Collez le code suivant dans le module.

Vous êtes maintenant prêt à utiliser la macro VBA. Ensuite, nous passerons au code VBA spécifique et à son explication.

Explication du code pour fusionner des PDF avec VBA

Ici, nous présentons le code VBA utilisant Adobe Acrobat. Lors de l’utilisation de PDFtk, vous pouvez procéder avec des étapes similaires, mais des opérations en ligne de commande sont requises.

Code VBA utilisant Adobe Acrobat

Tout d’abord, voici le code pour fusionner des PDF en utilisant 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

Explication du code

  • Dim AcroApp As Object : Crée un objet pour l’application Adobe Acrobat.
  • Dim PartDocs As Object : Crée un objet pour gérer les documents PDF individuels.
  • Dim CombinedDoc As Object : Crée un objet pour gérer le document PDF combiné.
  • Pdf1, Pdf2, OutputPdf : Définit les chemins des fichiers PDF à fusionner et du fichier PDF de sortie.
  • Set AcroApp = CreateObject("AcroExch.App") : Crée une instance de l’application Adobe Acrobat.
  • Set PartDocs = CreateObject("AcroExch.PDDoc") : Crée une instance pour les documents PDF individuels.
  • PartDocs.Open(Pdf1), PartDocs.Open(Pdf2) : Ouvre les fichiers PDF.
  • CombinedDoc.InsertPages : Insère le deuxième PDF dans le premier PDF.
  • CombinedDoc.Save : Enregistre le PDF fusionné.
  • AcroApp.Exit : Quitte l’application Acrobat.

Code VBA utilisant PDFtk

Ensuite, voici le code VBA pour utiliser 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

Explication du code

  • Pdf1, Pdf2, OutputPdf : Définit les chemins des fichiers PDF à fusionner et du fichier PDF de sortie.
  • Command : Crée la commande PDFtk. La commande pdftk fusionne les fichiers PDF spécifiés et génère le fichier de sortie.
  • Shell Command, vbNormalFocus : Exécute la commande shell pour fusionner les fichiers PDF.

Vous comprenez maintenant comment fusionner plusieurs fichiers PDF en utilisant Excel VBA. Ensuite, nous expliquerons les étapes pour exécuter la macro.

Étapes pour exécuter la macro

Ici, nous expliquerons les étapes pour exécuter la macro dans Excel en utilisant le code VBA introduit plus tôt pour fusionner les PDF.

Configuration et exécution de la macro

  1. Ouvrez le fichier Excel
    Ouvrez le fichier Excel où vous souhaitez exécuter le processus de fusion.
  2. Ouvrez l’éditeur VBA
    Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
  3. Insérez un nouveau module
    Sélectionnez « Insertion » dans le menu et choisissez « Module » pour insérer un nouveau module.
  4. Collez le code
    Collez le code suivant dans le nouveau module. Ici, nous montrons un exemple en utilisant Adobe Acrobat, mais si vous utilisez PDFtk, utilisez le code PDFtk introduit plus tôt.
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. Exécutez la macro
  • Fermez l’éditeur VBA et revenez à Excel.
  • Appuyez sur Alt + F8 pour ouvrir la boîte de dialogue « Macro ».
  • Sélectionnez « MergePDFs_Acrobat » et cliquez sur « Exécuter ».

6.Vérifiez le résultat de la fusion des PDF
Vérifiez que le fichier PDF fusionné a été créé à l’emplacement spécifié pour le fichier de sortie (par exemple, C:\path\to\your\output\merged.pdf).

Utilisation de PDFtk

  1. Collez le code VBA
    Si vous utilisez PDFtk, collez le code suivant dans le 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. Exécutez la macro
    Suivez les mêmes étapes pour exécuter la macro comme décrit précédemment, mais utilisez le code PDFtk.

Avec ces étapes, vous pouvez fusionner plusieurs fichiers PDF en utilisant Excel VBA. Ensuite, nous couvrirons les problèmes courants et leurs solutions.

Dépannage

Voici les problèmes courants et leurs solutions lors de la fusion de PDF en utilisant Excel VBA.

1. Adobe Acrobat n’est pas installé

Problème : Si Adobe Acrobat n’est pas installé, une erreur se produit avec CreateObject("AcroExch.App").
Solution : Installez Adobe Acrobat Pro. Cette opération ne peut pas être effectuée avec le lecteur Adobe Reader gratuit.

2. Chemin de fichier incorrect

Problème : Si le chemin du fichier PDF spécifié est incorrect, une erreur se produit avec PartDocs.Open(Pdf1) ou PartDocs.Open(Pdf2).
Solution : Vérifiez que le chemin est correct et que les fichiers existent aux chemins spécifiés.

3. La fusion du PDF échoue

Problème : CombinedDoc.InsertPages peut échouer à insérer des pages.
Solution : Vérifiez que les PDF à fusionner ne sont pas corrompus. Si les PDF ont un nombre de pages extrêmement élevé, des problèmes de mémoire peuvent survenir. Essayez de fusionner des fichiers PDF plus petits.

4. L’enregistrement du PDF échoue

Problème : Enregistrer le PDF fusionné avec CombinedDoc.Save peut échouer.
Solution : Assurez-vous que le dossier de destination de l’enregistrement a des permissions d’écriture. Vérifiez également qu’il n’y a pas de fichier existant portant le même nom et essayez d’enregistrer avec un nom différent.

5. La commande PDFtk ne s’exécute pas

Problème : Si la commande PDFtk ne s’exécute pas correctement, une erreur se produit avec Shell Command, vbNormalFocus.
Solution : Assurez-vous que PDFtk est correctement installé et ajouté au chemin système (PATH). Essayez également d’exécuter la commande PDFtk directement dans l’invite de commande pour vérifier si elle fonctionne correctement.

6. Paramètres de référence incorrects

Problème : Si la bibliothèque d’objets Adobe Acrobat n’est pas définie comme référence, une erreur se produit avec CreateObject("AcroExch.App").
Solution : Dans l’éditeur VBA, sélectionnez « Références » dans le menu « Outils », cochez « Adobe Acrobat xx.x Type Library », et cliquez sur « OK ».

7. Autres erreurs VBA

Problème : Pour d’autres erreurs VBA, entrez en mode débogage pour identifier la cause.
Solution : Dans l’éditeur VBA, appuyez sur F8 pour passer en revue le code et identifier la ligne causant l’erreur. Examinez le message d’erreur pour trouver une solution appropriée.

Référez-vous à ce guide de dépannage pour résoudre les problèmes et fusionner les PDF sans encombre. Ensuite, nous résumerons les étapes discutées.

Conclusion

Nous avons expliqué comment fusionner plusieurs fichiers PDF en utilisant Excel VBA. En suivant ces étapes, vous pouvez automatiser les tâches manuelles de fusion de PDF, améliorant ainsi l’efficacité. Voici les points clés :

  • Préparer les outils requis : Installez et configurez Adobe Acrobat ou PDFtk.
  • Créer le code VBA : Créez un code VBA pour fusionner les PDF en utilisant Adobe Acrobat ou PDFtk.
  • Exécuter la macro : Exécutez la macro VBA dans Excel pour fusionner les PDF.
  • Dépannage : Résolvez les problèmes courants et assurez une fusion de PDF sans encombre.

En suivant ces étapes, vous pouvez facilement fusionner plusieurs fichiers PDF et améliorer considérablement l’efficacité du travail. Profitez de l’automatisation VBA pour simplifier vos tâches quotidiennes.

Sommaire