• 公開日:

VBAでPDFを結合するフリーソフト

VBAでPDFを結合するフリーソフトをご紹介します。

VBAを使用することでPDFの結合を自動化でき、ツールを毎回立ち上げる必要がなくなります。

仕事や学業などで頻繁に複数のPDFを結合している方は、VBAを活用して作業効率を高めましょう。

PDFtkの基本情報

PDFtk

PDFtk

評価: 4.0 (1)
評価をする:

☆を押した後にレビューができます

レビュー: (0)

    日本語: ×
    オンライン(インストール不要): ×
    オフライン(インストール型): 〇

    PDFtkを使ってVBAでPDFを結合する方法

    PDFtkを使ってVBAでPDFを結合する方法をご紹介します。

    PDFtkはアメリカ合衆国のPDF Labsが提供するPDF編集ソフトです。Windowsのほか、MacやLinuxで使用できます。

    今回はWindows 11を使って、VBAでPDFを結合する方法をご紹介します。

    Visual Basicを選択する

    Excelを起動します。

    開発タブ、②「Visual Basic」の順に選択します。

    参照設定を選択する

    「Microsoft Visual Basic for Applications」が開きます。

    まず、参照設定に「Windows Script Host Object Model」を追加します。

    ツールタブ、②「参照設定」の順に選択します。

    「Windows Script Host Object Model」を設定する

    「参照設定-VBAProject」ダイアログボックスが表示されます。

    画面を下にスクロールし、②「Windows Script Host Object Model」に✓を入れ、③「OK」ボタンを押します

    標準モジュールを選択する

    追加できました。これで、マクロが外部機能にアクセスできるようになります。

    次に、VBAでPDFを結合します。

    挿入タブ、②「標準モジュール」の順に選択します。

    コードを貼り付ける

    標準モジュールが表示されます。

    以下のVBAコードをコピーして貼り付けます。

    Sub CombinePDFs()
        Dim CommandString As String '実行するコマンドを格納
        Dim SourceFolder As String 'PDFファイルがあるフォルダのパス
        Dim CurrentFile As String '現在処理しているファイル名
        Dim FullFilePath As String '現在処理しているファイルのフルパス
        Dim OutputPDFPath As String '出力するPDFファイルのパス
        Dim OutputFolder As String '出力PDFの保存先フォルダ
        Dim ShellObj As Object 'シェルオブジェクト
        Dim ExecutionResult As Object 'コマンド実行結果を格納
    
        'PDFファイルが格納されているフォルダのパスを指定
        SourceFolder = "C:\Users\ユーザー名\Desktop\結合する"
    
        '出力ファイルのフォルダパスを指定
        OutputFolder = "C:\Users\ユーザー名\Desktop\結合する"
        
        'コマンド初期化
        CommandString = ""
    
        'フォルダ内のPDFファイルを列挙
        CurrentFile = Dir(SourceFolder & "\*.pdf")
    
        'フォルダ内のすべてのPDFに対して処理
        Do While CurrentFile <> ""
           
            'ファイルのフルパスを取得
            FullFilePath = SourceFolder & "\" & CurrentFile
           
            'コマンドにファイルを追加
            CommandString = CommandString & " " & FullFilePath
           
            '次のファイル名を取得
            CurrentFile = Dir()
           
        Loop
    
        '結合後のPDFファイル名を設定(元のフォーマットに戻す)
        OutputPDFPath = OutputFolder & "\" & "PDF結合ファイル_" & Format(Now, "yyyymmddhhmm") & ".pdf"
    
        'pdftkを使用してPDFを結合
        CommandString = "pdftk" & CommandString & " cat output " & OutputPDFPath
    
        'コマンドを実行
        Set ShellObj = CreateObject("WScript.Shell")
        Set ExecutionResult = ShellObj.Exec("%ComSpec% /c " & CommandString)
    
        'コマンドの実行完了を待機
        Do While ExecutionResult.Status = 0
            DoEvents
        Loop
    
        'オブジェクトの解放
        Set ExecutionResult = Nothing
        Set ShellObj = Nothing
    
    End Sub
    
    

    なお、「SourceFolder」「OutputFolder」には任意のフォルダパスを指定する必要があります。

    マクロを保存する

    作成したマクロを保存します。

    ファイルタブ、②「上書き保存」の順に選択します。

    保存先を指定する

    「名前を付けて保存」ダイアログボックスが表示されまます。

    任意の保存先(例:ダウンロード)を選択し、②ファイル名(例:結合)を入力します。

    ③ファイルの種類で「Excelマクロ有効ブック」を選択し、④「保存」ボタンを押します

    マクロを選択する

    Excelシートに戻り、マクロを実行します。

    開発タブ、②「マクロ」の順に選択します。

    実行する

    「マクロ」ダイアログボックスが表示されます。

    作成したマクロ(例:CombinePDFs)を選択し、②「実行」ボタンを押します

    ファイルを開く

    PDFが結合できました。

    保存先として指定したフォルダを開き、結合したファイルをダブルクリックで開きます。

    PDFtkを使ってVBAで結合できた

    結合したPDFが開けば、正しく結合できています。