【VBA】複数のPDFファイルを結合する方法《Adobe Acrobat Proを使わずにPDFtk(無料)を使用する》
VBAで無料でPDF結合処理をしたい人
Adobe Acrobat Pro(有料)を使わずに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の参照設定が必要になります。
- メニュータブの「ツール」をクリックし、参照設定をクリックする
- 「Windows Script Host Object Model」をチェックし、OKボタンをクリックする
PDFtkのインストール(無料)
PDFtkをPCにインストールします。
→PDFtkのインストールページはこちら
PDFtkのインストール手順
- PDFtkサイトページにアクセスする
- PDFtkサイトページの「Download PDFtk Free!」ボタンをクリックしてセットアップファイルをダウンロードする
- ダウンロードしたファイルをダブルクリックして起動する
- Nextボタンをクリックする
- 「I accept the agreement」を選択して、Nextボタンをクリックする
- インストールフォルダを指定して、Nextボタンをクリックする
- スタートメニューのフォルダを指定して、Nextボタンをクリックする
- 追加タスクを選択して、Nextボタンをクリックする
- Installボタンをクリックする
- Finishボタンをクリックする
複数のPDFファイルを結合するプログラム
以下が複数のPDFファイルを結合するプログラムです。結合するファイルを指定したフォルダ内に複数入れて、1つのPDFファイルに出力するプログラムです。
- '*****************************************
- '* PDFファイル結合 コマンドプロンプトからPDFtkで実行する
- '*****************************************
- Sub PDF_MERGE_PROCESS()
- Dim Cmd As String 'コマンド
- Dim FolderPath As String '元PDFファイル格納フォルダ
- Dim FileName As String 'フォルダ内のファイル名格納
- Dim FilePath As String 'ファイルパスを格納する変数を宣言
- Dim MERGE_PDF_PATH As String '結合ファイル保存先ファイルパス
- Dim MERGED_PDF_FOLDER_PATH As String '結合ファイル保存先フォルダパス
- Dim wsh As New IWshRuntimeLibrary.WshShell 'コマンドプロンプトを使うためのオブジェクト
- Dim result As WshExec 'コマンド結果を格納する変数
- '対象のフォルダのパスを指定
- FolderPath = "結合したいPDFファイルを置いているフォルダパスを指定する"
- '結合ファイル保存先のフォルダパスを指定
- MERGED_PDF_FOLDER_PATH = "結合したPDFを出力するフォルダパスを指定する"
- 'コマンド初期化
- Cmd = ""
- 'フォルダ内のファイルを列挙
- FileName = Dir(FolderPath & "\*.*")
- 'フォルダ内のすべてのファイルに対して繰り返し
- Do While FileName <> ""
- 'ファイルパスを取得
- FilePath = FolderPath & "\" & FileName
- Cmd = Cmd & FilePath & " "
- '次のファイル名を取得
- FileName = Dir()
- Loop
- '実行したいコマンド
- MERGE_PDF_PATH = MERGED_PDF_FOLDER_PATH & "\" & "PDF結合ファイル_" & Format(Now, "yyyymmddhhmm") & ".pdf"
- Cmd = "pdftk " & Cmd & "cat output " & MERGE_PDF_PATH
- 'コマンドを実行
- Set result = wsh.Exec("%ComSpec% /c " & Cmd)
- 'コマンドの実行が終わるまで待機
- Do While result.Status = 0
- DoEvents
- Loop
- Set result = Nothing
- Set wsh = Nothing
- End Sub
16行目:結合したいPDFファイルを置いているフォルダパスを指定する
19行目:結合したPDFを出力するフォルダパスを指定する
まとめ
Adobe Acrobat Proを使わずにVBAで複数のPDFファイルを結合する方法を紹介しました。
最後までご覧いただき、ありがとうございました。
「【ExcelVBA】Excelシートデータを別Excelファイルに出力する方法」
「【ExcelVBA】ExcelシートデータをCSVファイルに出力する方法」
「【ExcelVBA】別Excelファイルのシートデータ取り込み方法(複数ファイル・シート対応)」
も紹介していますので、もしよろしければこちらも御覧ください。
最近のコメント