Jak połączyć wiele plików PDF za pomocą Excel VBA

Ten artykuł wyjaśnia, jak połączyć wiele plików PDF w jeden przy użyciu Excel VBA. Automatyzując ten proces, można zaoszczędzić wysiłek i pracować efektywnie. Metoda ta jest szczególnie przydatna przy pracy z dużą liczbą plików PDF. Postępuj zgodnie z poniższymi krokami, aby łatwo utworzyć i używać makra do łączenia plików PDF.

Spis treści

Wymagane narzędzia i przygotowanie

Aby połączyć pliki PDF przy użyciu makra VBA, wymagane jest pewne przygotowanie. Sprawdź narzędzia i kroki poniżej.

Instalacja narzędzi do łączenia PDF

Do łączenia plików PDF potrzebna jest biblioteka PDF. Przedstawiamy metody z użyciem Adobe Acrobat lub PDFtk.

Dla Adobe Acrobat
  1. Zainstaluj Adobe Acrobat. Wymagana jest licencja na Adobe Acrobat Pro.
  2. Ustaw bibliotekę obiektów Acrobat jako referencję w VBA.
  • Otwórz edytor VBA w Excelu (Alt + F11).
  • Wybierz „References” z menu „Tools”.
  • Zaznacz „Adobe Acrobat xx.x Type Library” i kliknij „OK”.
Dla PDFtk
  1. Zainstaluj PDFtk. Możesz użyć darmowego PDFtk Server.
  2. Dodaj katalog instalacyjny PDFtk do systemowego PATH.
  • Edytuj zmienne środowiskowe systemu Windows i dodaj ścieżkę instalacji PDFtk do „Path”.

Konfiguracja makra

  1. Otwórz plik Excel i otwórz edytor VBA za pomocą Alt + F11.
  2. Wstaw nowy moduł (Menu „Insert” → „Module”).
  3. Wklej poniższy kod do modułu.

Teraz jesteś gotowy do użycia makra VBA. Następnie przejdziemy do konkretnego kodu VBA i jego wyjaśnienia.

Wyjaśnienie kodu do łączenia plików PDF za pomocą VBA

Tutaj przedstawiamy kod VBA z użyciem Adobe Acrobat. Korzystając z PDFtk, możesz postępować w podobny sposób, ale wymagane są operacje w wierszu poleceń.

Kod VBA z użyciem Adobe Acrobat

Oto kod do łączenia plików PDF za pomocą 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

Wyjaśnienie kodu

  • Dim AcroApp As Object: Tworzy obiekt dla aplikacji Adobe Acrobat.
  • Dim PartDocs As Object: Tworzy obiekt do zarządzania poszczególnymi dokumentami PDF.
  • Dim CombinedDoc As Object: Tworzy obiekt do zarządzania połączonym dokumentem PDF.
  • Pdf1, Pdf2, OutputPdf: Ustawia ścieżki dla plików PDF do połączenia oraz pliku wyjściowego PDF.
  • Set AcroApp = CreateObject("AcroExch.App"): Tworzy instancję aplikacji Adobe Acrobat.
  • Set PartDocs = CreateObject("AcroExch.PDDoc"): Tworzy instancję dla poszczególnych dokumentów PDF.
  • PartDocs.Open(Pdf1), PartDocs.Open(Pdf2): Otwiera pliki PDF.
  • CombinedDoc.InsertPages: Wstawia drugi PDF do pierwszego PDF.
  • CombinedDoc.Save: Zapisuje połączony PDF.
  • AcroApp.Exit: Zamyka aplikację Acrobat.

Kod VBA z użyciem PDFtk

Następnie przedstawiamy kod VBA do użycia 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

Wyjaśnienie kodu

  • Pdf1, Pdf2, OutputPdf: Ustawia ścieżki dla plików PDF do połączenia oraz pliku wyjściowego PDF.
  • Command: Tworzy polecenie PDFtk. Polecenie pdftk łączy określone pliki PDF i generuje plik wyjściowy.
  • Shell Command, vbNormalFocus: Wykonuje polecenie shell, aby połączyć pliki PDF.

Teraz wiesz, jak połączyć wiele plików PDF przy użyciu Excel VBA. Następnie wyjaśnimy kroki do uruchomienia makra.

Kroki do uruchomienia makra

Wyjaśnimy kroki do uruchomienia makra w Excelu przy użyciu wprowadzonego wcześniej kodu VBA do łączenia plików PDF.

Konfiguracja i uruchomienie makra

  1. Otwórz plik Excel
    Otwórz plik Excel, w którym chcesz uruchomić proces łączenia.
  2. Otwórz edytor VBA
    Naciśnij Alt + F11, aby otworzyć edytor VBA.
  3. Wstaw nowy moduł
    Wybierz „Insert” z menu i wybierz „Module”, aby wstawić nowy moduł.
  4. Wklej kod
    Wklej poniższy kod do nowego modułu. Tutaj pokazujemy przykład z użyciem Adobe Acrobat, ale jeśli używasz PDFtk, użyj kodu PDFtk wprowadzonego wcześniej.
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. Uruchom makro
  • Zamknij edytor VBA i wróć do Excela.
  • Naciśnij Alt + F8, aby otworzyć okno dialogowe „Macro”.
  • Wybierz „MergePDFs_Acrobat” i kliknij „Run”.

6.Zweryfikuj wynik łączenia PDF
Sprawdź, czy połączony plik PDF został utworzony w określonej ścieżce pliku wyjściowego (np. C:\path\to\your\output\merged.pdf).

Używanie PDFtk

  1. Wklej kod VBA
    Jeśli używasz PDFtk, wklej poniższy kod do modułu.
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. Uruchom makro
    Postępuj zgodnie z tymi samymi krokami, aby uruchomić makro jak opisano wcześniej, ale użyj kodu PDFtk.

Dzięki tym krokom możesz połączyć wiele plików PDF za pomocą Excel VBA. Następnie omówimy typowe problemy i ich rozwiązania.

Rozwiązywanie problemów

Oto typowe problemy i rozwiązania przy łączeniu plików PDF za pomocą Excel VBA.

1. Adobe Acrobat nie jest zainstalowany

Problem: Jeśli Adobe Acrobat nie jest zainstalowany, wystąpi błąd przy CreateObject("AcroExch.App").
Rozwiązanie: Zainstaluj Adobe Acrobat Pro. Ta operacja nie może być wykonana za pomocą darmowego Adobe Reader.

2. Nieprawidłowa ścieżka pliku

Problem: Jeśli określona ścieżka pliku PDF jest nieprawidłowa, wystąpi błąd przy PartDocs.Open(Pdf1) lub PartDocs.Open(Pdf2).
Rozwiązanie: Sprawdź, czy ścieżka jest prawidłowa i czy pliki znajdują się w określonych lokalizacjach.

3. Niepowodzenie łączenia plików PDF

Problem: CombinedDoc.InsertPages może nie powieść się wstawianie stron.
Rozwiązanie: Sprawdź, czy pliki PDF, które mają zostać połączone, nie są uszkodzone. Jeśli pliki PDF mają bardzo dużą liczbę stron, mogą wystąpić problemy z pamięcią. Spróbuj połączyć mniejsze pliki PDF.

4. Niepowodzenie zapisu pliku PDF

Problem: Zapisanie połączonego PDF za pomocą CombinedDoc.Save może się nie powieść.
Rozwiązanie: Upewnij się, że folder docelowy zapisu ma uprawnienia do zapisu. Sprawdź również, czy nie ma istniejącego pliku o tej samej nazwie i spróbuj zapisać pod inną nazwą.

5. Polecenie PDFtk nie wykonuje się

Problem: Jeśli polecenie PDFtk nie wykonuje się poprawnie, wystąpi błąd przy Shell Command, vbNormalFocus.
Rozwiązanie: Upewnij się, że PDFtk jest poprawnie zainstalowany i dodany do systemowego PATH. Spróbuj również wykonać polecenie PDFtk bezpośrednio w wierszu poleceń, aby sprawdzić, czy działa poprawnie.

6. Nieprawidłowe ustawienia referencji

Problem: Jeśli biblioteka obiektów Adobe Acrobat nie jest ustawiona jako referencja, wystąpi błąd przy CreateObject("AcroExch.App").
Rozwiązanie: W edytorze VBA wybierz „References” z menu „Tools”, zaznacz „Adobe Acrobat xx.x Type Library” i kliknij „OK”.

7. Inne błędy VBA

Problem: W przypadku innych błędów VBA wejdź w tryb debugowania, aby zidentyfikować przyczynę.
Rozwiązanie: W edytorze VBA naciśnij F8, aby przejść przez kod i zidentyfikować linię powodującą błąd. Zbadaj komunikat o błędzie, aby znaleźć odpowiednie rozwiązanie.

Odnies się do tego przewodnika rozwiązywania problemów, aby rozwiązać problemy i płynnie łączyć pliki PDF. Następnie podsumujemy omawiane kroki.

Podsumowanie

Wyjaśniliśmy, jak połączyć wiele plików PDF przy użyciu Excel VBA. Postępując zgodnie z tymi krokami, możesz zautomatyzować ręczne zadania łączenia plików PDF, zwiększając wydajność. Oto kluczowe punkty:

  • Przygotuj wymagane narzędzia: Zainstaluj i skonfiguruj Adobe Acrobat lub PDFtk.
  • Utwórz kod VBA: Utwórz kod VBA do łączenia plików PDF za pomocą Adobe Acrobat lub PDFtk.
  • Uruchom makro: Wykonaj makro VBA w Excelu, aby połączyć pliki PDF.
  • Rozwiązywanie problemów: Rozwiązuj typowe problemy i zapewnij płynne łączenie plików PDF.

Postępując zgodnie z tymi krokami, możesz łatwo połączyć wiele plików PDF i znacznie poprawić wydajność pracy. Wykorzystaj automatyzację VBA, aby usprawnić codzienne zadania.

Spis treści