Excel VBAでPDF文書プロパティを書き換え

2009年11月7日メールはこのアドレスへお願いします

■ 私は Adobe Acrobat 7 Standard しか持っていない

Acrobat 7 Standard にはバッチ処理(一括処理)機能がない(Acrobat 7 Professional ならバッチ処理機能が利用できる)ので不便である。だったら Excel VBA でオブジェクトを操作して PDF ファイルの文書のプロパティ(タイトル/作成者/サブタイトル)などを書き換えてやれ!ということで,VBE オブジェクトブラウザやネット検索で調べてコードを書いた。

(1) 参照設定をする

Excel Visual Basic Editor の「ツール」「参照設定」で Acrobat にチェックを付ける(C:\Program Files\Adobe\Acrobat 7.0\Acrobat\acrobat.tlb)。もちろん Adobe Acrobat がインストールされていることが前提条件である。次回「参照設定」から確認すると「Adobe Acrobat 7.0 Type Library」と表示されるはずだ。

(2) オブジェクトブラウザで調べる

まずPDFファイルを開く必要があるので Acrobatライブラリからopenというキーワードで検索するとAcroPDDocにopenメソッドがあることが分かるので,AcroPDDocなどのキーワードにネットの検索エンジンで探す。

するとPDF through VBA: How to set Initial View?に行き着くので,このコードを参考にして下記のコードを書いた。


Sub フォルダ内PDFのタイトル作成者などを書き換える()

'カレントドライブ・フォルダを変更
ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path

myPath = ActiveWorkbook.Path & "\"
myFname = Dir(myPath & "*.pdf")

    Do While myFname <> ""
        
        Set qq = CreateObject("AcroExch.PDDoc")
            b = qq.Open(myPath & myFname)
            b = qq.SetInfo("Title", Range("B1"))
            b = qq.SetInfo("Author", Range("B2"))
            b = qq.SetInfo("Subject", Range("B3"))
            
            '... 33 = PDSaveFull (1) OR PDSaveCollectGarbage (32)
            b = qq.Save(33, myPath & myFname)
            b = qq.Close
                    
        myFname = Dir()
    Loop

MsgBox "終了しました"

End Sub

ある適当なフォルダ内のPDFファイルを開き,文書のプロパティのタイトル/作成者/サブタイトルにセルB1/セルB2/セルB3の値を代入する。私の手元では今のところ問題なく動作している。作業がとても便利になった。

 UNIQUE LABORATORY に戻る