【VBA】Adobe Acrobat Proを使わずにPDFファイルを結合する

PDFBoxをダウンロード

最近、黒米を食べてるJimです。どうも✋

 

黒米入れてご飯炊くといい感じの色になりますよ。

はい。ってことで、今回はVBAでAdobe Acrobat Proを使わずに、PDFをマージしていこうと思いやす。

正確にはJavaの外部ライブラリであるPDFBoxにコマンドライン送ってマージさせるので、VBA使わなくてもよいしbatファイルでも可能です。

じゃあ、やっていきやしょう。

まず、Javaがインストールされていないと話にならないので、Javaを書く気がある人は開発環境のJDKをインストールし、書く気がない人は実行環境のJREをインストールします。

インストール方法は簡単なので特に触れません。同じページの上部にJDKがあり下部にJREがあります。OSを選択しダウンロード&インストールを行います。

次に、PDFBoxをインストールします。PDFBoxはJavaでPDFを操作するためのライブラリです。

自分は『pdfbox-app-2.0.31.jar』をダウンロードしました。最新バージョンは使えないライブラリがあった気がします。なんで?

PDFBoxを特定の場所に保存します。(名前は変更可)

 

 

PDFBoxでPDFをマージするコマンドを走らせる

したら、VBAでコマンドを書いて実行します。

コマンドの内容は、PDFがある階層に移動しPDFBoxにコマンドラインを渡して実行します。

コマンドラインは『PDFMerger PDFファイルのフルパス(複数ある場合は半角スペース区切り) マージして作成するファイルのフルパス』です。

マージするPDFは、てんやからメニューをいくつかダウンロードして『C:\pdf』に格納しておきました。

PDFBoxは『C:\Java』に保存。

VBEにコードを記述します。

'PDFBoxの場所
Const PDFBOX_NAME As String = "C:\Java\pdfbox-app-2.0.31.jar"

Public Sub merge()

    'pdfファイルのディレクトリを格納
    Dim targetFilePath As String
    targetFilePath = "C:\pdf"

    'コマンド作成
    Dim str As String
    str = "pushed " & targetFilePath
    str = str & " & java -jar " & PDFBOX_NAME & " PDFMerger " & targetFilePath & "\*.pdf " & targetFilePath & "\New.pdf"

    'コマンド実行
    Dim obj As Object
    Set obj = CreateObject("WScript.Shell")
    Dim ex As Object
    Set ex = obj.exec("cmd.exe /c" & str)

    '待機処理
    Do While ex.status = 0

        DoEvents

    Loop

End Sub

御覧の通りワイルドカードもいけます。

実行。。。

マージされたNewファイルが作成されました。

 

 

はい、というわけで『Adobe Acrobat Proを使わずにPDFファイルを結合する』という記事でした。

コマンドでJavaの外部ライブラリにコマンドライン引数ぶん投げただけなんですけどね。

PDFのスプリットはJavaを書いてClassかJarファイルを作成して、同じようにコマンドラインぶん投げて実行すればできます。気が向いたら紹介します。

ホイ。ってことで、またね✋

 

VBA

Posted by jim