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

関連記事

2016年1月の人気記事前のページ

Re: 【Wordマクロ】Word起動時に、前回終了時に開いていたファイルを表示次のページ

関連記事

  1. Office アドイン

    [Office用アプリ]Apps for Office サミット!で登壇しました。

    21日(土)に開催されたOffice 用アプリの勉強会「Apps fo…

  2. Office アドイン

    Office 2016で進化したOffice アドイン

    今日OfficeDevを眺めていて気が付いたのが「OfficeJS S…

  3. Office関連

    Office 365 unified APIをVBAから呼び出す

    前回の記事で、VBAからOffice 365 APIを呼び出す手順につ…

  4. Office関連

    Excel 2016でマップグラフを作成する。

    12月6日、Office Insider向けに、Office 2016…

  5. Office関連

    「DQNネーム辞書」を更新しました。

    前のブログで公開していたIME 2010用の「DQNネーム辞書」を更新…

  6. Office関連

    関数一覧(Excel 2013)

    関数の挿入ダイアログから抽出したExcel 2013の関数情報を表にし…

コメント

  • コメント (1)

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

    • こたろ~
    • 2016年 2月 03日 8:04pm

    きぬあさ様

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

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

    心から感謝いたします。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP