Come Unire Più PDF Utilizzando Excel VBA

Questo articolo spiega come unire più file PDF in uno solo utilizzando Excel VBA. Automatizzando questo processo, è possibile risparmiare sforzi e lavorare in modo efficiente. Questo metodo è particolarmente utile quando si lavora con un gran numero di PDF. Segui i passaggi sottostanti per creare e utilizzare facilmente una macro per l’unione dei PDF.

Indice

Strumenti e Preparazione Necessari

Per unire i PDF utilizzando una macro VBA, è necessaria una certa preparazione. Controlla gli strumenti e i passaggi seguenti.

Installazione degli Strumenti per l’Unione dei PDF

Per l’unione dei PDF, è necessaria una libreria PDF. Qui presentiamo metodi utilizzando Adobe Acrobat o PDFtk.

Per Adobe Acrobat
  1. Installa Adobe Acrobat. È necessaria una licenza per Adobe Acrobat Pro.
  2. Imposta la libreria di oggetti Acrobat come riferimento in VBA.
  • Apri l’editor VBA in Excel (Alt + F11).
  • Seleziona “Riferimenti” dal menu “Strumenti”.
  • Seleziona “Adobe Acrobat xx.x Type Library” e fai clic su “OK”.
Per PDFtk
  1. Installa PDFtk. Puoi utilizzare PDFtk Server gratuito.
  2. Aggiungi la directory di installazione di PDFtk al sistema PATH.
  • Modifica le variabili di ambiente di sistema di Windows e aggiungi il percorso di installazione di PDFtk al “Path”.

Configurazione della Macro

  1. Apri un file Excel e apri l’editor VBA con Alt + F11.
  2. Inserisci un nuovo modulo (Menu “Inserisci” → “Modulo”).
  3. Incolla il seguente codice nel modulo.

Ora sei pronto per utilizzare la macro VBA. Successivamente, passeremo al codice VBA specifico e alla sua spiegazione.

Spiegazione del Codice per Unire i PDF con VBA

Qui introduciamo il codice VBA utilizzando Adobe Acrobat. Quando si utilizza PDFtk, è possibile procedere con passaggi simili, ma sono richieste operazioni da riga di comando.

Codice VBA Utilizzando Adobe Acrobat

Innanzitutto, ecco il codice per unire i PDF utilizzando 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

    ' Imposta il percorso dei file PDF
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Crea l'oggetto Adobe Acrobat
    Set AcroApp = CreateObject("AcroExch.App")
    Set PartDocs = CreateObject("AcroExch.PDDoc")

    ' Apri il primo PDF
    If PartDocs.Open(Pdf1) Then
        ' Crea un nuovo documento PDF con il primo PDF
        Set CombinedDoc = PartDocs

        ' Apri il secondo PDF
        If PartDocs.Open(Pdf2) Then
            ' Unisci il secondo PDF
            If CombinedDoc.InsertPages(CombinedDoc.GetNumPages() - 1, PartDocs, 0, PartDocs.GetNumPages(), 0) Then
                ' Salva il PDF unito
                If Not CombinedDoc.Save(1, OutputPdf) Then
                    MsgBox "Failed to save the merged PDF."
                End If
            Else
                MsgBox "Failed to insert pages."
            End If

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

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

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

Spiegazione del Codice

  • Dim AcroApp As Object: Crea un oggetto per l’applicazione Adobe Acrobat.
  • Dim PartDocs As Object: Crea un oggetto per gestire i singoli documenti PDF.
  • Dim CombinedDoc As Object: Crea un oggetto per gestire il documento PDF combinato.
  • Pdf1, Pdf2, OutputPdf: Imposta i percorsi dei file PDF da unire e del file PDF di output.
  • Set AcroApp = CreateObject("AcroExch.App"): Crea un’istanza dell’applicazione Adobe Acrobat.
  • Set PartDocs = CreateObject("AcroExch.PDDoc"): Crea un’istanza per i singoli documenti PDF.
  • PartDocs.Open(Pdf1), PartDocs.Open(Pdf2): Apre i file PDF.
  • CombinedDoc.InsertPages: Inserisce il secondo PDF nel primo PDF.
  • CombinedDoc.Save: Salva il PDF unito.
  • AcroApp.Exit: Esce dall’applicazione Acrobat.

Codice VBA Utilizzando PDFtk

Successivamente, ecco il codice VBA per l’utilizzo di PDFtk.

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

    ' Imposta il percorso dei file PDF
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Crea il comando PDFtk
    Command = "pdftk " & Pdf1 & " " & Pdf2 & " cat output " & OutputPdf

    ' Esegui il comando shell per unire i PDF
    Shell Command, vbNormalFocus
End Sub

Spiegazione del Codice

  • Pdf1, Pdf2, OutputPdf: Imposta i percorsi dei file PDF da unire e del file PDF di output.
  • Command: Crea il comando PDFtk. Il comando pdftk unisce i file PDF specificati e genera il file di output.
  • Shell Command, vbNormalFocus: Esegue il comando shell per unire i PDF.

Ora capisci come unire più PDF utilizzando Excel VBA. Successivamente, spiegheremo i passaggi per eseguire la macro.

Passaggi per Eseguire la Macro

Qui spiegheremo i passaggi per eseguire la macro in Excel utilizzando il codice VBA introdotto in precedenza per unire i PDF.

Configurazione ed Esecuzione della Macro

  1. Apri il file Excel
    Apri il file Excel in cui desideri eseguire il processo di unione.
  2. Apri l’editor VBA
    Premi Alt + F11 per aprire l’editor VBA.
  3. Inserisci un nuovo modulo
    Seleziona “Inserisci” dal menu e scegli “Modulo” per inserire un nuovo modulo.
  4. Incolla il codice
    Incolla il seguente codice nel nuovo modulo. Qui mostriamo un esempio utilizzando Adobe Acrobat, ma se utilizzi PDFtk, usa il codice PDFtk introdotto in precedenza.
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

    ' Imposta il percorso dei file PDF
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Crea l'oggetto Adobe Acrobat
    Set AcroApp = CreateObject("AcroExch.App")
    Set PartDocs = CreateObject("AcroExch.PDDoc")

    ' Apri il primo PDF
    If PartDocs.Open(Pdf1) Then
        ' Crea un nuovo documento PDF con il primo PDF
        Set CombinedDoc = PartDocs

        ' Apri il secondo PDF
        If PartDocs.Open(Pdf2) Then
            ' Unisci il secondo PDF
            If CombinedDoc.InsertPages(CombinedDoc.GetNumPages() - 1, PartDocs, 0, PartDocs.GetNumPages(), 0) Then
                ' Salva il PDF unito
                If Not CombinedDoc.Save(1, OutputPdf) Then
                    MsgBox "Failed to save the merged PDF."
                End If
            Else
                MsgBox "Failed to insert pages."
            End If

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

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

    ' Esci da Acrobat
    AcroApp.Exit
    Set AcroApp = Nothing
    Set PartDocs = Nothing
    Set CombinedDoc = Nothing
End Sub
  1. Esegui la macro
  • Chiudi l’editor VBA e torna a Excel.
  • Premi Alt + F8 per aprire la finestra di dialogo “Macro”.
  • Seleziona “MergePDFs_Acrobat” e fai clic su “Esegui”.

6.Verifica il risultato dell’unione dei PDF
Controlla che il file PDF unito sia stato creato nel percorso specificato del file di output (ad esempio, C:\path\to\your\output\merged.pdf).

Utilizzo di PDFtk

  1. Incolla il codice VBA
    Se utilizzi PDFtk, incolla il seguente codice nel modulo.
Sub MergePDFs_PDFtk()
    Dim Pdf1 As String
    Dim Pdf2 As String
    Dim OutputPdf As String
    Dim Command As String

    ' Imposta il percorso dei file PDF
    Pdf1 = "C:\path\to\your\first\pdf.pdf"
    Pdf2 = "C:\path\to\your\second\pdf.pdf"
    OutputPdf = "C:\path\to\your\output\merged.pdf"

    ' Crea il comando PDFtk
    Command = "pdftk " & Pdf1 & " & Pdf2 & " cat output " & OutputPdf

    ' Esegui il comando shell per unire i PDF
    Shell Command, vbNormalFocus
End Sub
  1. Esegui la macro
    Segui gli stessi passaggi per eseguire la macro come descritto in precedenza, ma utilizza il codice PDFtk.

Con questi passaggi, puoi unire più file PDF utilizzando Excel VBA. Successivamente, copriremo i problemi comuni e le loro soluzioni.

Risoluzione dei Problemi

Ecco i problemi comuni e le soluzioni quando si uniscono i PDF utilizzando Excel VBA.

1. Adobe Acrobat non è installato

Problema: Se Adobe Acrobat non è installato, si verifica un errore con CreateObject("AcroExch.App").
Soluzione: Installa Adobe Acrobat Pro. Questa operazione non può essere eseguita con il lettore Adobe gratuito.

2. Percorso file errato

Problema: Se il percorso del file PDF specificato è errato, si verifica un errore con PartDocs.Open(Pdf1) o PartDocs.Open(Pdf2).
Soluzione: Verifica che il percorso sia corretto e che i file esistano nei percorsi specificati.

3. L’unione dei PDF fallisce

Problema: CombinedDoc.InsertPages potrebbe non riuscire a inserire le pagine.
Soluzione: Controlla che i PDF da unire non siano danneggiati. Se i PDF hanno un numero estremamente elevato di pagine, potrebbero verificarsi problemi di memoria. Prova a unire file PDF più piccoli.

4. Il salvataggio del PDF fallisce

Problema: Salvare il PDF unito con CombinedDoc.Save potrebbe fallire.
Soluzione: Assicurati che la cartella di destinazione abbia i permessi di scrittura. Inoltre, controlla che non esista già un file con lo stesso nome e prova a salvare con un nome diverso.

5. Il comando PDFtk non viene eseguito

Problema: Se il comando PDFtk non viene eseguito correttamente, si verifica un errore con Shell Command, vbNormalFocus.
Soluzione: Assicurati che PDFtk sia installato correttamente e aggiunto al sistema PATH. Inoltre, prova a eseguire il comando PDFtk direttamente nel prompt dei comandi per verificare se funziona correttamente.

6. Impostazioni di riferimento errate

Problema: Se la libreria di oggetti Adobe Acrobat non è impostata come riferimento, si verifica un errore con CreateObject("AcroExch.App").
Soluzione: Nell’editor VBA, seleziona “Riferimenti” dal menu “Strumenti”, seleziona “Adobe Acrobat xx.x Type Library” e fai clic su “OK”.

7. Altri errori VBA

Problema: Per altri errori VBA, entra in modalità debug per identificare la causa.
Soluzione: Nell’editor VBA, premi F8 per passare attraverso il codice e identificare la linea che causa l’errore. Indaga sul messaggio di errore per una soluzione appropriata.

Fai riferimento a questa guida di risoluzione dei problemi per risolvere i problemi e unire i PDF senza problemi. Successivamente, riassumeremo i passaggi discussi.

Conclusione

Abbiamo spiegato come unire più PDF utilizzando Excel VBA. Seguendo questi passaggi, puoi automatizzare le attività di unione dei PDF manuali, migliorando l’efficienza. Ecco i punti chiave:

  • Prepara gli strumenti necessari: Installa e configura Adobe Acrobat o PDFtk.
  • Crea il codice VBA: Crea il codice VBA per unire i PDF utilizzando Adobe Acrobat o PDFtk.
  • Esegui la macro: Esegui la macro VBA in Excel per unire i PDF.
  • Risoluzione dei problemi: Affronta i problemi comuni e assicurati di unire i PDF senza problemi.

Seguendo questi passaggi, puoi facilmente unire più PDF e migliorare notevolmente l’efficienza del lavoro. Sfrutta al massimo l’automazione VBA per semplificare le tue attività quotidiane.

Indice