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.
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
- Zainstaluj Adobe Acrobat. Wymagana jest licencja na Adobe Acrobat Pro.
- 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
- Zainstaluj PDFtk. Możesz użyć darmowego PDFtk Server.
- Dodaj katalog instalacyjny PDFtk do systemowego PATH.
- Edytuj zmienne środowiskowe systemu Windows i dodaj ścieżkę instalacji PDFtk do „Path”.
Konfiguracja makra
- Otwórz plik Excel i otwórz edytor VBA za pomocą
Alt + F11
. - Wstaw nowy moduł (Menu „Insert” → „Module”).
- 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. Poleceniepdftk
łą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
- Otwórz plik Excel
Otwórz plik Excel, w którym chcesz uruchomić proces łączenia. - Otwórz edytor VBA
NaciśnijAlt + F11
, aby otworzyć edytor VBA. - Wstaw nowy moduł
Wybierz „Insert” z menu i wybierz „Module”, aby wstawić nowy moduł. - 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
- 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
- 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
- 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.