Excelで複数のPDFファイルを自動結合!VBAマクロでドキュメント管理を効率化する方法#0004

VBA

Excelで複数のPDFファイルを自動結合!VBAマクロでドキュメント管理を効率化する方法


はじめに

注文書などの複数のPDFファイルを一つに結合したいときってありますよね。手動で行うのは手間がかかりますし、そもそもどうやってやるの?って疑問も浮かんできたり。そこで、今回は、VBAマクロを利用し複数のPDFファイルを自動的に結合する方法をご紹介します。

このマクロを使えば、複数のPDFファイルを簡単に一つにまとめることができ、ドキュメント管理もしやすくなり、日付フォルダに入っているようなPDFのファイル数も削減出来て、メリットだらけです。


PDFファイルの自動結合

VBAエディタを開こう

VBAマクロに馴染みがない方は、以下を参考にVBAエディタを開くところから始めます。

  1. Excelの「開発」タブをクリックします。開発タブが表示されていない場合、[ファイル] > [オプション] > [リボンのユーザー設定] で「開発」をチェックして表示させます。
  2. 「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マクロの動作まとめ

  1. PDFフォルダの指定: 結合対象のPDFファイルが保存されているフォルダを指定します。
  2. PDFファイルの結合: フォルダ内のPDFファイルを順次結合し、一つのファイルにまとめます。
  3. 結合ファイルの保存: 結合されたPDFファイルを指定したフォルダに保存します。
  4. 完了通知: PDFファイルの結合が完了したことをメッセージボックスで通知します。

このVBAマクロを使用することで、複数のPDFファイルを自動で結合し、あっという間に毎日の手作業を大幅に改善することができます。


VBAマクロを実行してみる

VBAマクロを実行する方法は2つあります。VBAエディタ内で実行する方法と、Excelシート上でボタンを作成して実行する方法です。

  1. VBAエディタで実行する方法:
    • VBAエディタ内で作成したマクロを選択し、「実行」ボタンをクリックします。
  2. ボタンを作成して実行する方法:
    • 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結合作業も楽になり、ドキュメント管理も大幅に改善させることができます。

コメント

タイトルとURLをコピーしました