Office関連

PDFファイル上のフィールドの値を操作するVBAマクロ

PDFファイルに差し込み印刷するVBAマクロ」で、Acrobatを操作してPDF上のフォームにデータを差し込むマクロを紹介しているのですが、“チェックボックスにチェックを入れるにはどうしたら良いか?”、という質問がありました。

答えは簡単で、getFieldメソッドで取得したフィールドのValueプロパティで、各フィールドに設定してある下図のような値を指定すれば良いのです。

AcrobatFormInput_01

例えば下図のようなPDFファイルのフィールドを操作する場合は、下記コードのようになります。

AcrobatFormInput_02

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

関連記事

  1. Office関連

    コマンドマクロ一覧(Word 2013)

    Word 2013に組み込まれている「コマンドマクロ」のコマンド名、説…

  2. Office関連

    [雑感]Office 365 Soloに向く人、向かない人

    ここ一週間ほどOffice 365 Soloを触ってみて、ある程度のこ…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(P)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office関連

    表の特定の列に対して処理を行うWordマクロ

    2015/6/12 追記:下記で紹介しているコードはセルの結合を考…

コメント

  • コメント (1)

  • トラックバックは利用できません。

    • こたろ~
    • 2016年 2月 03日

    きぬあさ様

    早速教えてくださり,どうもありがとうございました。

    テキストを入れて設定するとは,全く思いつきませんでした。自分で
    調べていたら永久に分からなかったでしょう。

    心から感謝いたします。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP