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 に戻る