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. Excel

    Power Automate経由でTwitterに投稿するVBAマクロ

    Hiro( @mofumofu_dance )さんがVBAとPower…

  2. Office関連

    関数一覧(Excel 2013)

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

  3. Office アドイン

    [Office用アプリ]カレンダーから日付入力

    カレンダーから日付を選ぶだけで選択中のセルに日付を入力できるコンテンツ…

  4. Office関連

    指定したAccessファイルで「データベースの最適化/修復」を実行するVBAマクロ

    大分前の記事になりますが、開いているデータベースを最適化するマクロのコ…

  5. アイコン一覧

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

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

  6. Office関連

    段落内改行を一括置換するOutlookマクロ

    「段落内改行 置換 Outlook マクロ」といったキーワードでのアク…

コメント

  • コメント (1)

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

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

    きぬあさ様

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

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

    心から感謝いたします。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP