Excelで複数のPDFファイルを自動結合!VBAマクロでドキュメント管理を効率化する方法
はじめに
注文書などの複数のPDFファイルを一つに結合したいときってありますよね。手動で行うのは手間がかかりますし、そもそもどうやってやるの?って疑問も浮かんできたり。そこで、今回は、VBAマクロを利用し複数のPDFファイルを自動的に結合する方法をご紹介します。
このマクロを使えば、複数のPDFファイルを簡単に一つにまとめることができ、ドキュメント管理もしやすくなり、日付フォルダに入っているようなPDFのファイル数も削減出来て、メリットだらけです。
PDFファイルの自動結合
VBAエディタを開こう
VBAマクロに馴染みがない方は、以下を参考にVBAエディタを開くところから始めます。
- Excelの「開発」タブをクリックします。開発タブが表示されていない場合、[ファイル] > [オプション] > [リボンのユーザー設定] で「開発」をチェックして表示させます。
- 「Visual Basic」をクリックしてVBAエディタを開きます。
VBAマクロコードを書きましょう
以下のプログラミングコードをVBAエディタにコピペします。このコードは、指定されたフォルダ内のPDFファイルを自動的に結合する。という機能が記載されています。
Sub MergePDFs()
Dim pdfFolder As String
Dim pdfFiles As String
Dim mergedPDF As Object
Dim i As Integer
' PDFが保存されているフォルダのパスを指定
pdfFolder = "C:\Your\PDF\Folder\"
' Acrobatのオブジェクトを作成
Set mergedPDF = CreateObject("AcroExch.PDDoc")
' フォルダ内の最初のPDFファイルを開く
pdfFiles = Dir(pdfFolder & "*.pdf")
mergedPDF.Open pdfFolder & pdfFiles
' 2つ目以降のPDFファイルを結合
pdfFiles = Dir
Do While pdfFiles <> ""
Dim tempPDF As Object
Set tempPDF = CreateObject("AcroExch.PDDoc")
tempPDF.Open pdfFolder & pdfFiles
mergedPDF.InsertPages -1, tempPDF, 0, tempPDF.GetNumPages, 0
tempPDF.Close
pdfFiles = Dir
Loop
' 結合されたPDFを保存
mergedPDF.Save 1, pdfFolder & "MergedFile.pdf"
mergedPDF.Close
MsgBox "PDFファイルの結合が完了しました。"
End Sub
ポイント!
pdfFolder = "C:\Your\PDF\Folder\"で、結合対象のPDFファイルが保存されているフォルダを指定します。Set mergedPDF = CreateObject("AcroExch.PDDoc")で、Acrobatのオブジェクトを作成しています。mergedPDF.InsertPages -1, tempPDF, 0, tempPDF.GetNumPages, 0で、他のPDFファイルを順次結合していきます。
VBAマクロの動作まとめ
- PDFフォルダの指定: 結合対象のPDFファイルが保存されているフォルダを指定します。
- PDFファイルの結合: フォルダ内のPDFファイルを順次結合し、一つのファイルにまとめます。
- 結合ファイルの保存: 結合されたPDFファイルを指定したフォルダに保存します。
- 完了通知: PDFファイルの結合が完了したことをメッセージボックスで通知します。
このVBAマクロを使用することで、複数のPDFファイルを自動で結合し、あっという間に毎日の手作業を大幅に改善することができます。
VBAマクロを実行してみる
VBAマクロを実行する方法は2つあります。VBAエディタ内で実行する方法と、Excelシート上でボタンを作成して実行する方法です。
- VBAエディタで実行する方法:
- VBAエディタ内で作成したマクロを選択し、「実行」ボタンをクリックします。
- ボタンを作成して実行する方法:
- Excelシート上にボタンを挿入し、マクロを割り当てます。
- ボタンをクリックするだけで、マクロが実行されます。
ポイント
1のやり方がオススメです。慣れてきたら2を挑戦してみましょう。PDFの結合順番をカスタマイズすることも可能です。ファイル名に番号を付けるなどして、結合順番を調整してください。
エラー処理を追加しました。
よくある問い合わせで、PDFの結合作業中に、指定したフォルダにPDFファイルが存在しない場合や、ファイルが開けない場合など、エラーが発生する可能性があります。こうしたエラーを回避するために、エラー処理を追加する方法をご紹介します。
そのまま使えるVBAマクロ エラー処理付きPDF結合
Sub MergePDFsWithErrorHandling()
On Error GoTo ErrorHandler
Dim pdfFolder As String
Dim pdfFiles As String
Dim mergedPDF As Object
' PDFが保存されているフォルダのパスを指定
pdfFolder = "C:\Your\PDF\Folder\"
' Acrobatのオブジェクトを作成
Set mergedPDF = CreateObject("AcroExch.PDDoc")
' フォルダ内の最初のPDFファイルを開く
pdfFiles = Dir(pdfFolder & "*.pdf")
mergedPDF.Open pdfFolder & pdfFiles
' 2つ目以降のPDFファイルを結合
pdfFiles = Dir
Do While pdfFiles <> ""
Dim tempPDF As Object
Set tempPDF = CreateObject("AcroExch.PDDoc")
tempPDF.Open pdfFolder & pdfFiles
mergedPDF.InsertPages -1, tempPDF, 0, tempPDF.GetNumPages, 0
tempPDF.Close
pdfFiles = Dir
Loop
' 結合されたPDFを保存
mergedPDF.Save 1, pdfFolder & "MergedFile.pdf"
mergedPDF.Close
MsgBox "PDFファイルの結合が完了しました。"
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
End Sub
ポイント
On Error GoTo ErrorHandlerで、色んな解消方法はあるのですが、エラーが発生した場合にエラー処理コードにジャンプさせています。ErrorHandlerでは、エラーメッセージを表示し、VBAマクロの実行を終了します。
予期しないエラーを回避し、安心してPDFファイルの結合作業を行うことができます。
まとめ
今回は、Excelで複数のPDFファイルを自動結合するVBAマクロを中心に、結合順番の調整方法や、リクエストに応じた、エラー処理を含めたVBAマクロコードを公開しご紹介とさせて頂きました。毎日行っていた手作業でのPDF結合作業も楽になり、ドキュメント管理も大幅に改善させることができます。


コメント