「PDFファイルに差し込み印刷するVBAマクロ」で、Acrobatを操作してPDF上のフォームにデータを差し込むマクロを紹介しているのですが、“チェックボックスにチェックを入れるにはどうしたら良いか?”、という質問がありました。
答えは簡単で、getFieldメソッドで取得したフィールドのValueプロパティで、各フィールドに設定してある下図のような値を指定すれば良いのです。
例えば下図のようなPDFファイルのフィールドを操作する場合は、下記コードのようになります。
Option Explicit Public Sub Sample() Dim app As Object Dim avdoc As Object Const PDSaveFull = &H1 Const PdfFilePath As String = "C:\Test\Form.pdf" 'PDFファイルのパス Set app = CreateObject("AcroExch.App") Set avdoc = CreateObject("AcroExch.AVDoc") If avdoc.Open(PdfFilePath, "") = True Then app.Show 'Acrobat表示 With avdoc.GetPDDoc.GetJSObject .getField("fldName").Value = "斉藤 花子" '氏名 .getField("fldGender").Value = "女" '性別 .getField("fldAge").Value = "25" '年齢 .getField("fldAddress").Value = "神奈川県" '住所 .getField("fldBaseball").Value = "Off" '野球 .getField("fldGolf").Value = "ゴルフ" 'ゴルフ .getField("fldGame").Value = "ゲーム" 'ゲーム .getField("fldBook").Value = "Off" '読書 End With avdoc.GetPDDoc.Save PDSaveFull, "C:\Test\Form2.pdf" '別名保存 avdoc.Close 1 '文書を保存せずに閉じる app.Hide: app.Exit End If End Sub
Acrobatを表示する必要が無い場合はCAcroPDDocオブジェクトだけで操作することができるため、下記のように短いコードで処理できます。
Public Sub Sample2() Const PDSaveFull = &H1 Const PdfFilePath As String = "C:\Test\Form.pdf" 'PDFファイルのパス With CreateObject("AcroExch.PDDoc") If .Open(PdfFilePath) = True Then With .GetJSObject .getField("fldName").Value = "佐藤 はじめ" '氏名 .getField("fldGender").Value = "男" '性別 .getField("fldAge").Value = "28" '年齢 .getField("fldAddress").Value = "埼玉県" '住所 .getField("fldBaseball").Value = "野球" '野球 .getField("fldGolf").Value = "Off" 'ゴルフ .getField("fldGame").Value = "Off" 'ゲーム .getField("fldBook").Value = "読書" '読書 End With .Save PDSaveFull, "C:\Test\Form2.pdf" '別名保存 .Close End If End With End Sub
きぬあさ様
早速教えてくださり,どうもありがとうございました。
テキストを入れて設定するとは,全く思いつきませんでした。自分で
調べていたら永久に分からなかったでしょう。
心から感謝いたします。