【VBA】複数のPDFファイルを結合する方法《Adobe Acrobat Proを使わずにPDFtk(無料)を使用する》

8月 25, 2023

※当ブログではリンク先にプロモーションを含みます。

【VBA】複数のPDFファイルを結合する方法《Adobe Acrobat Proを使わずにPDFtk(無料)を使用する》
VBAで無料でPDF結合処理をしたい人
Adobe Acrobat Pro(有料)を使わずにPDF結合処理をしたい人向けに書いています。

本記事の内容

・VBAで複数のPDFファイルを結合する方法

VBAで複数のPDFファイルを結合処理しようとしたとき、有料のAdobe Acrobat Proを使用しないとできないと思っていませんか?
VBAで複数のPDFファイルを結合処理を無料で実現したいと思っていませんか?

Adobe Acrobat Proを使わずにVBAで複数のPDFファイルを結合する方法を紹介します。

 

VBA(マクロ)で複数のPDFファイルを結合する方法

Adobe Acrobat Proを使わずにVBAで複数のPDFファイルを結合するには、PDFtkをインストールしてVBAからコマンドプロンプトでPDFtkを実行してPDFファイルを結合します。
PDFtkを使用してPDFファイルを結合するには以下の準備が必要です。

  • VBAの参照設定を設定する
  • PDFtkのインストール(無料)する
  • 複数のPDFファイルを結合するプログラムを作成する

VBAの参照設定

本方法では以下のVBAの参照設定が必要になります。

  1. メニュータブの「ツール」をクリックし、参照設定をクリックする
  2.  

  3. 「Windows Script Host Object Model」をチェックし、OKボタンをクリックする
    「Windows Script Host Object Model」をチェックする

 

PDFtkのインストール(無料)

PDFtkをPCにインストールします。
PDFtkのインストールページはこちら

PDFtkのインストール手順

  1. PDFtkサイトページにアクセスする
  2.  

  3. PDFtkサイトページの「Download PDFtk Free!」ボタンをクリックしてセットアップファイルをダウンロードする
    PDFtkサイトページ
  4.  

  5. ダウンロードしたファイルをダブルクリックして起動する
    PDFインストールファイル
  6.  

  7. Nextボタンをクリックする
    PDFtkセットアップウィザード開始画面
  8.  

  9. 「I accept the agreement」を選択して、Nextボタンをクリックする
    PDFtkライセンス同意画面
  10.  

  11. インストールフォルダを指定して、Nextボタンをクリックする
    PDFtkインストールフォルダの指定
  12.  

  13. スタートメニューのフォルダを指定して、Nextボタンをクリックする
    PDFtkのスタートメニューのフォルダを選択
  14.  

  15. 追加タスクを選択して、Nextボタンをクリックする
    PDFtkの追加タスクを選択
  16.  

  17. Installボタンをクリックする
    PDFtkのインストール準備完了
  18.  

  19. Finishボタンをクリックする
    PDFtkのインストール完了画面

 

複数のPDFファイルを結合するプログラム

以下が複数のPDFファイルを結合するプログラムです。結合するファイルを指定したフォルダ内に複数入れて、1つのPDFファイルに出力するプログラムです。

  1. '*****************************************
  2. '* PDFファイル結合 コマンドプロンプトからPDFtkで実行する
  3. '*****************************************
  4. Sub PDF_MERGE_PROCESS()
  5.     
  6.     Dim Cmd As String 'コマンド
  7.     Dim FolderPath As String '元PDFファイル格納フォルダ
  8.     Dim FileName As String 'フォルダ内のファイル名格納
  9.     Dim FilePath As String 'ファイルパスを格納する変数を宣言
  10.     Dim MERGE_PDF_PATH As String '結合ファイル保存先ファイルパス
  11.     Dim MERGED_PDF_FOLDER_PATH As String '結合ファイル保存先フォルダパス
  12.     Dim wsh As New IWshRuntimeLibrary.WshShell 'コマンドプロンプトを使うためのオブジェクト
  13.     Dim result As WshExec 'コマンド結果を格納する変数
  14.     
  15.     '対象のフォルダのパスを指定
  16.     FolderPath = "結合したいPDFファイルを置いているフォルダパスを指定する"
  17.     
  18.     '結合ファイル保存先のフォルダパスを指定
  19.     MERGED_PDF_FOLDER_PATH = "結合したPDFを出力するフォルダパスを指定する"
  20.     
  21.     'コマンド初期化
  22.     Cmd = ""
  23.     
  24.     'フォルダ内のファイルを列挙
  25.     FileName = Dir(FolderPath & "\*.*")
  26.     
  27.     'フォルダ内のすべてのファイルに対して繰り返し
  28.     Do While FileName <> ""
  29.         
  30.         'ファイルパスを取得
  31.         FilePath = FolderPath & "\" & FileName
  32.         
  33.         Cmd = Cmd & FilePath & " "
  34.         
  35.         '次のファイル名を取得
  36.         FileName = Dir()
  37.         
  38.     Loop
  39.     
  40.     '実行したいコマンド
  41.     MERGE_PDF_PATH = MERGED_PDF_FOLDER_PATH & "\" & "PDF結合ファイル_" & Format(Now, "yyyymmddhhmm") & ".pdf"
  42.     Cmd = "pdftk " & Cmd & "cat output " & MERGE_PDF_PATH
  43.     
  44.     'コマンドを実行
  45.     Set result = wsh.Exec("%ComSpec% /c " & Cmd)
  46.     
  47.     'コマンドの実行が終わるまで待機
  48.     Do While result.Status = 0
  49.         
  50.         DoEvents
  51.         
  52.     Loop
  53.     
  54.     Set result = Nothing
  55.     Set wsh = Nothing
  56.     
  57. End Sub


16行目:結合したいPDFファイルを置いているフォルダパスを指定する
19行目:結合したPDFを出力するフォルダパスを指定する
 

まとめ

Adobe Acrobat Proを使わずにVBAで複数のPDFファイルを結合する方法を紹介しました。
最後までご覧いただき、ありがとうございました。

 

【ExcelVBA】Excelシートデータを別Excelファイルに出力する方法
【ExcelVBA】ExcelシートデータをCSVファイルに出力する方法
【ExcelVBA】別Excelファイルのシートデータ取り込み方法(複数ファイル・シート対応)
も紹介していますので、もしよろしければこちらも御覧ください。