AFormAut オブジェクト 一覧

TOP > AFormAut オブジェクト 一覧      [...]


IMG_3633

概要

AFromAut オブジェクトとは、PDF のフォーム作成を支援するOLE オートメーション(ActiveX オートメーション)です。他のOLEオートメーション(IAC)と共に利用することが前提です。

ポイント

AcroForm Automation : フォーム機能のOLE Automation

  1. PDF上にフォームフィールド(フィールド)を作成します。
    ここで言う フォームフィールドとは以下です。
    • テキストボックス
    • ボタン
    • コンボボックス
    • リストボックス
    • チェックボックス
    • ラジオボタン
    • 電子著名   
  2. 他のOLE オブジェクトと連携して操作します。 しかし、
    オブジェクトの連携図 [ OLE objects and methods ] 」には記載無し。  
  3. PDFへ Acrobat JavaScript の追加と実行等の機能もサポートします。   

AFromAut オブジェクトのメソッドとプロパティ (階層で表示)

*AD : Adobe社のSDK解説サイト(英語)へのリンク ※後日消滅

  1. AFormApp  *AD
    • Form Automation オブジェクト
    • PDF をオープンした以降に作成する。
      事前にAVDoc オブジェクトを使ってPDFをオープンする必要有り。
      Dim objAFormApp As AFORMAUTLib.AFormAppSet objAFormAut = CreateObject("AFormAut.App")
    • AFormAup オブジェクトのメソッド
      1. RunDistributeFormWizard : ※使用方法は不明
    • AFormAup オブジェクトのプロパティ
      1. Fields *: Fields オブジェクトの作成   
  2. Fields  *AD
    • アクティブな文書上のフィールドのコレクション
    • Fields オブジェクトのメソッド
      1. Add : フィールドの追加 
      2. AddDocJavascript : PDF レベルのJavaScript 追加 
      3. ExecuteThisJavascript : JavaScript の実行
      4. ExportAsFDF : FDF 形式での書き出し
      5. ExportAsHtml : HTML 形式での書き出し
      6. ImportAnFDF : FDFファイルの取り込み
      7. Remove : フィールドの削除  
    • Fields オブジェクトのプロパティ
      1. Count : Fields コレクション内のField オブジェクトの数を取得
      2. Item *AD: フィールド名を指定してField オブジェクトを作成する  
  3. Field  *AD
    • アクティブな文書上のフィールド
    • Field オブジェクトのメソッド
      1. PopulateListOrComboBox *AD:
        ListBox , ComboBox の項目、出力値の設定
      2. SetBackgroundColor *AD: 背景色の設定
      3. SetBorderColor *AD: 境界線の色を設定
      4. SetButtonCaption *AD: ボタン表示の設定
      5. SetButtonIcon *AD: ボタンアイコンの設定
      6. SetExportValues *AD: 出力値の設定
      7. SetForegroundColor *AD: 前景色(文字色)の設定
      8. SetJavaScriptAction *AD: JavaScript 動作の設定
      9. SetResetFormAction *AD: ResetForm 動作の設定
      10. SetSubmitFormAction *AD: Sumbit 動作の設定   
    • Field オブジェクトのプロパティ
      1. Alignment : テキストフィールドのテキストの配置の取得と設定
      2. BorderStyle : テキストフィールドの境界線のスタイルの取得と設定
      3. BorderWidth : フィールドの境界線の太さの取得とと設定
      4. ButtonLayout *AD: ボタンのレイアウトの外観の取得と設定
      5. CalcOrderIndex *AD: フィールドの計算順序の取得と設定
      6. CharLimit *AD: テキストフィールドに入力できる文字数の取得と設定
      7. DefaultValue *AD: デフォルトの値の取得と設定
      8. Editable *AD: コンボボックス等から選択の可否の取得と設定
      9. Highlight *AD: クリック時の表示方法の取得と設定
      10. IsHidden *AD: フィールドの表示/非表示の取得と設定
      11. IsMultiline *AD: テキストフィールドのマルチライン表示の取得と設定
        注意)テストで機能の確認ができませんでした。その解決策がココにあります。
      12. IsPassword *AD: パスワード表示(文字の*表示)の取得と設定
      13. IsReadOnly *AD: フィールドの読み取り専用の取得と設定
      14. IsRequired *AD: フィールドの必須入力かの取得と設定
      15. IsTerminal *AD: フィールドがターミナルかの値の取得
      16. Name *AD: フィールドの名前(=完全修飾名)の取得
      17. NoViewFlag *AD: 印刷可否 ?? の取得と設定
      18. PrintFlag *AD: 印刷時に印刷されるかの取得と設定
      19. Style *AD: チェックボックスやラジオボタンのスタイルの取得と設定
      20. TextFont : テキストのフォントの取得と設定 
      21. TextSize *AD: テキストのフォントサイズの取得と設定
      22. Type *AD: フィールドのタイプの取得
      23. Value *AD: フィールドの値の取得と設定

*AD : Adobe社のSDK解説サイト(英語)へのリンク。(2019/07/17:かなりのリンクが消滅しています)


 

動作確認の結果

必ず自分の環境下で再確認してください。

Adobe
Acrobat
結果
備考
4
Acrobat 4.0 + Excel 2000 + Windows 98SE
5
Acrobat 5.0.5 + Excel 2003 + Windows XP
6
Acrobat 6.0.6 Pro + Excel 2003 + Windows XP
7
OK
Acrobat 7.1.4 Pro + Excel 2003 + Windows XP *1
8
NO
Acrobat 8.3.1 Pro + Excel 2003 + Windows XP
9
NO
Acrobat 9.5.5 Extended + Excel 2003 + Windows XP
10
OK
Acrobat X (10.1.8) Extended + Excel 2003 + Windows XP
11
OK
Acrobat XI (11.0.5) Extended + Excel 2003 + Windows XP
  • △: 上位の PDFのバージョン は処理できない。
    詳細は当サイトページ下部の「テスト結果の詳細」を参照。
  • OK : 正常処理する。
  • NO : 正常に処理できない。 又は実行時にエラーとなる。
  • *1 : レジストリに「"idocNewerVersionWarning"=dword:00000001 」を事前に追加する必要があります。
    そして、以下の警告ダイアログボックスを表示しないようにする必要があります。
    Adobe Acrobat 「このファイルは、このバージョンの Acrobat ではサポートされていない新しい形式を使用している可能性があります。正しく開いたり表示できない場合があります。最新バージョンの Acrobat 製品にアップグレードすることをお勧めします。Acrobat 製品のサイト (http://www.adobe.co.jp/acrobat) を参照してください。 以後、このメッセージを表示しない
    Acrobat 7 より上位バージョンPDFの警告メッセージ

備考

  1. Interapplication Communication API Reference / Adobe® Acrobat® SDK November 2006 Version 8.0」英語版だが唯一公開されているAFormAut オブジェクトの解説書
  2. AFORMAUTlib タイムスタンプライブラリの内容」参照。
  3. Acrobat JavaScript の詳細な解説書/リファレンス 日本語 URL (765頁)
    JavaScript for Acrobat API Reference
    Adobe Acrobat SDK バージョン 8.0
     
    ※上記の解説文書のバージョンは古いが、十分に使えます。
  4. AcroForm Automation オブジェクト(AFormAut) の質問をされても返答できる程の知識は現在無いです。
  5. AcroFrom プラグイン(AcroForm.api 又は Aform32.api)に実装されたActiveX オートメーション。
  6. NoViewFlag , PrintFlag の違いがイマイチ判らない・・・。

その他のVBAサンプル

  1. PDFにページ番号を追加する方法
  2. PDFをWEBブラウザでしか表示出来ない様にする方法(this.path 使用)
  3. PDFをWEBブラウザでしか表示出来ない様にする方法(this.URL 使用) ※運用上の注意点有り

注意

  1. AFormAut オブジェクト操作時にあるタイミングで実行エラーが発生します。以下を参考に対策用のロジックの追加が必要です。
  2. AFormAut オブジェクトを使ってPDF へ処理を行うにはパソコン環境にインストールされている Acrobat アプリケーションのバージョンに制限があります。
    • Acrobat 4 ~ Acrobat 6 : 操作が一部で不可
    • Acrobat 7 : 操作可
    • Acrobat 8 ~ Acrobat 9 : 操作不可
    • Acrobat X (10) ~ Acrobat XI (11) : 操作可
  3. PDF のバージョン により処理が出来ない場合があります。
    ※これはテスト結果です。SDK 及びメーカー技術サイト で確認した内容ではありません。
    PDFのプロパティ画面PDFのバージョン  :  1.6 (Acrobat 7.x 互換)

  4. Acrobat アプリケーションをメモリ上に確実にロードする
    objAcroApp.CloseAllDocs
    を実行しておかないと、以下のVBAステートメント(命令)を実行する時に、
    実行エラー(ランタイムエラー)が発生します。
    Set objAFormApp = CreateObject("AFormAut.App")
    429 ActiveXコンポーネントはオブジェクトを作成できません。
    429 ActiveXコンポーネントはオブジェクトを作成できません。
     

  5. 「Set objAFormFields = objAFormApp.Fields」を実行するには
    「objAcroAVDoc.Open」で該当するPDFファイルをオープンしておく必要があります。
    「objAcroPDDoc.Open」ではダメです。

TOPへ


サイト管理人のメモ : テスト結果の詳細

以下はサイト管理人のメモ&記録です。

見なくても結構です。

  1. OK : 正常処理
  2. NO : 処理できない。又は実行エラーになる。
  3. E1 :
    Set objAFormApp = CreateObject("AFormAut.App")
    実行時にランタイムエラー で続行不可
    「429 ActiveX コンポーネントはオブジェクトを作成できません。」
    429 ActiveXコンポーネントはオブジェクトを作成できません。

  4. E2 :
    Set objAFormFields = objAFormApp.Fields
    実行時にランタイムエラー で続行不可
    「-2147220991 現在Acrobatで文書が開いていません。」
    -2147220991 現在Acrobatで文書が開いていません。

  5. E3 :
    Acrobat アプリケーション 本体が起動され
    「このファイルは、このバージョンのAcrobatではサポートされてない・・・」
    ダイアログボックスが表示される。
    OKボタンをクリックした後のAcrobat本体をすぐに終了すれば、正常終了。
    Acrobat本体をしばらくそのままにしておくと、OLEエラーになり、
    次に実行エラー(-2147220991 Runtime rror)となる。
  6. E4 :
    「別のプログラムでOLEの操作が完了するまで待機を続けます。」
    ダイアログボックスが表示される。
    別のプログラムでOLEの操作が完了するまで待機を続けます。

  7. E5 : 警告メッセージがPDFファイルのオープン時に表示される。
    なお、このメッセージはAcrobatバージョンにより、多少異なる。
    Adobe Acrobat このファイルには、この Viewer でサポート可能なものより新しい情報が含まれている可能性があります。正しく開いたり表示できない可能性があります。Adobe では、Acrobat 製品の最新バージョンにアップグレードするようおすすめします。http://www.adobe.co.jp/acrobat 以後、このメッセージを表示しない
    サポート対象外PDFへの警告メッセージ

  8. E6 :
    「この文書を開くときにエラーが発生しました。ファイルが壊れています。修復できませんでした。」
    で処理続行不可。

Acrobat 4

  1. テスト環境:Acrobat 4.0 + Excel 2000 + Win98
  2. PDFのバージョンが 1.7  以上は処理できない。
PDF のバージョン
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
OK
1.7
NO
処理できない。 E6
1.7,Adobe Extension Level 3
NO
処理できない。 E6
1.7,Adobe Extension Level 8
NO
処理できない。 E6

Acrobat 5

  1. テスト環境:Acrobat 5.0.5 + Excel 2003 + Windows XP
  2. PDFのバージョンが 1.6 以上は処理できない。
  3. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定は無い。
NO
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
NO
処理できない。 E5
処理できる場合も有り。
1.7
NO
処理できない。 E6
1.7,Adobe Extension Level 3
NO
処理できない。 E6
1.7,Adobe Extension Level 8
NO
処理できない。 E6

Acrobat 6

  1. テスト環境:Acrobat 6.0.6 + Excel 2003 + Windows XP
  2. PDFのバージョンが 1.6 以上は処理できない。
  3. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定は無い。
PDF のバージョン
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
NO
処理できない。 E5
処理できる場合も有り。
1.7
NO
処理できない。 E5
処理できる場合も有り。
1.7,Adobe Extension Level 3
NO
処理できない。 E5
1.7,Adobe Extension Level 8
NO
処理できない。 E5

Acrobat 7

  1. テスト環境:Acrobat 7.1.4 + Excel 2003 + Windows XP
  2. PDFのバージョンが 1.7 以上はレジストリ操作が必要。
  3. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定は出来る。
    [HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert]
    [HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert¥cCheckbox]
    "idocNewerVersionWarning"=dword:00000001
PDF のバージョン
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
OK
1.7
OK
E4 , E5
レジストリ操作で処理可能
1.7,Adobe Extension Level 3
OK
E5
レジストリ操作で処理可能
1.7,Adobe Extension Level 8
OK
E5
レジストリ操作で処理可能

Acrobat 8

  1. テスト環境:Acrobat 8.3.1 Pro + Excel 2003 + Windows XP
  2. PDFのバージョン で処理できない。
  3. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定をしても処理できない。
PDF のバージョン
結果
備考
1.2
NO
E2
1.3
NO
E2
1.4
NO
E2
1.5
NO
E2
1.6
NO
E2
1.7
NO
E2
1.7,Adobe Extension Level 3
NO
E3
1.7,Adobe Extension Level 8
NO
E3

Acrobat 9

  1. テスト環境:Acrobat 9.5.2 Extended + Excel 2003 + Windows XP
  2. PDFのバージョン で処理できない。
  3. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定をしても処理できない。
PDF のバージョン
結果
備考
1.2
NO
E1
1.3
NO
E1
1.4
NO
E2
1.5
NO
E1
1.6
NO
E2
1.7
NO
E2
1.7,Adobe Extension Level 3
NO
E2
1.7,Adobe Extension Level 8
NO
E3

Acrobat X (10)

  1. テスト環境:Acrobat X (10.1.4) Extended + Excel 2003 + Windows XP
  2. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定は出来る。[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥10.0¥AVAlert]
    [HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥10.0¥AVAlert¥cCheckbox]
    "idocNewerVersionWarning"=dword:00000001
PDF のバージョン
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
OK
1.7
OK
1.7,Adobe Extension Level 3
OK
1.7,Adobe Extension Level 8
OK

Acrobat XI (11)

  1. テスト環境:Acrobat XI (11.0) Extended + Excel 2003 + Windows XP
  2. PDFの上位バージョンに対する警告メッセージを再表示させないレジストリ設定は出来る。[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥11.0¥AVAlert]
    [HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥11.0¥AVAlert¥cCheckbox]
    "idocNewerVersionWarning"=dword:00000001
PDF のバージョン
結果
備考
1.2
OK
1.3
OK
1.4
OK
1.5
OK
1.6
OK
1.7
OK
1.7,Adobe Extension Level 3
OK
1.7,Adobe Extension Level 8
OK

TOPへ

「AFormAut オブジェクト 一覧」への4件のフィードバック

  1. ゴクリン さんへ。

    >こちらの情報を参考にvbaで文字を90°回転させたテキストボックスを追加したいと思ったのですが、文字を回転させるにはどうしたらよいのでしょうか?

    残念ですが、Acrobat OLEには回転角度を指定する機能がありません。そこでその機能が有る Acrobat JavaScript をVBAから実行します。

    以下のサンプルを御覧ください。

    001 Option Explicit
    002
    003 Sub AFormApp_Field_Add_Rotation()
    004
    005 Dim sFilePath As String
    006 Dim bRet As Boolean
    007 Dim sFilePath_new As String
    008
    009 Dim objAFormApp As AFORMAUTLib.AFormApp
    010 Dim objAFormFields As AFORMAUTLib.Fields
    011 Dim objAFormField As AFORMAUTLib.Field
    012
    013 '初期値
    014 sFilePath = ThisWorkbook.Path & "\sample.pdf"
    015
    016 If Dir$(sFilePath, vbNormal) = "" Then
    017 MsgBox sFilePath & vbCrLf & _
    018 "ファイルが存在しない。", _
    019 vbOKOnly + vbCritical, "実行時のエラー"
    020 Exit Sub
    021 End If
    022
    023 'Acrobat 7,8,9,10,11 の時
    024 Dim objAcroApp As New Acrobat.AcroApp
    025 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
    026 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
    027 Dim objAcroPDPage As Acrobat.AcroPDPage
    028
    029 '※CreateObject("AFormAut.App")のエラー
    030 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
    031 '※回避用 / メモリにAcrobatを強制ロードさせる
    032 objAcroApp.CloseAllDocs
    033 objAcroApp.Hide
    034
    035 '処理対象のPDFファイルを開く
    036 If objAcroAVDoc.Open(sFilePath, "") = False Then
    037 MsgBox "AVDocオブジェクトはOpen出来ません", _
    038 vbOKOnly + vbCritical, "処理エラー"
    039 GoTo Skip_AFormApp_Field_Add_Rotation:
    040 End If
    041
    042 Set objAFormApp = CreateObject("AFormAut.App")
    043 Set objAFormFields = objAFormApp.Fields
    044 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
    045
    046
    047 'PDFの指定ページにテキストフィールドを追加
    048 '※ページ全体を覆うテキストボックス
    049 Set objAFormField = _
    050 objAFormFields.Add("Text-1", "text", _
    051 0, 20, 200, 300, 10)
    052
    053 'テキストフィールドの設定
    054 With objAFormField
    055 .SetBackgroundColor "RGB", 1, 1, 1, 0
    056 .Alignment = "center"
    057 .TextFont = "HeiseiMin-W3-UniJIS-UCS2-H"
    058 .Value = "★表示する文字★" '表示する文字
    059 .IsReadOnly = True '読み込み専用
    060 .IsHidden = False '表示
    061 .TextSize = 26
    062 End With
    063
    064 '▼▼ テキストフィールドの回転 Start ▼▼
    065 Const sAcrobatJavaScript = _
    066 "var f = this.getField('@1');" & _
    067 "f.rotation = @2 ;"
    068 Dim sAJS As String
    069 Dim sReturn As String
    070
    071 'Acrobat JavaScriptの編集
    072 sAJS = sAcrobatJavaScript
    073 sAJS = Replace(sAJS, "@1", "Text-1")
    074 sAJS = Replace(sAJS, "@2", "90")
    075 'Acrobat JavaScript の実行
    076 sReturn = objAFormFields.ExecuteThisJavascript(sAJS)
    077 '▲▲ テキストフィールドの回転 End ▲▲
    078
    079 'PDFファイルを別名で保存
    080 sFilePath_new = Replace(sFilePath, ".pdf", "_new.pdf")
    081 If objAcroPDDoc.Save(1, sFilePath_new) = False Then
    082 MsgBox "PDFファイルへ保存出来ませんでした", _
    083 vbOKOnly + vbCritical, "エラー"
    084 End If
    085
    086 'PDFファイルを閉じる
    087 If objAcroAVDoc.Close(False) = False Then
    088 MsgBox "AVDocオブジェクトはClose出来ませんでした", _
    089 vbOKOnly + vbCritical, "処理エラー"
    090 End If
    091
    092 Skip_AFormApp_Field_Add_Rotation:
    093
    094 On Error Resume Next
    095 '変更しないで閉じます。
    096 bRet = objAcroAVDoc.Close(False)
    097
    098 'Acrobatアプリケーションの終了
    099 objAcroApp.Hide
    100 objAcroApp.Exit
    101
    102 'オブジェクトの開放
    103 Set objAFormField = Nothing
    104 Set objAFormFields = Nothing
    105 Set objAFormApp = Nothing
    106 Set objAcroPDPage = Nothing
    107 Set objAcroPDDoc = Nothing
    108 Set objAcroAVDoc = Nothing
    109 Set objAcroApp = Nothing
    110
    111 MsgBox "終了しました。", _
    112 vbOKOnly + vbInformation, "お知らせ"
    113 End Sub

    ・@1:フィールドの名前「Text-1」
    ・@2:回転角度「90」
    回転角度の指定の詳細はコチラ rotation を御覧ください。

    ご希望の内容でしょうか?

  2. 対応ありがとうございます!
    まさしくやりたかったことそのものです。無事、回転させることができました。
    非常に助かりました。

    ちなみにテキストボックスに複数行のテキストを入力することは可能でしょうか?

    With objAFormField
    .Value = "文字列1" & vbCrLf & "文字列2"
    .IsMultiline = True


    文字列1
    文字列2
    というふうに表示できるかと思ったのですができず...
    立て続けに申し訳ありませんがご教示いただけないでしょうか。

  3. 管理人様

    ↑のコメント誤ってフルネームが入力されてしましました...

    お手数おかけして大変申し訳無いのですが削除をお願いできますでしょうか。

  4. ゴクリンさんへ。

    「ニックネーム」にしました。

    >.IsMultiline = True

    上記はダメですね。テストしましたが、バグっている可能性があるので外して下さい。
    その代わり、Acrobat JavaScriptの部分を

    Const sAcrobatJavaScript = _
    "var f = this.getField('@1');" & _
    "f.rotation = @2 ;" & _
    "f.multiline = true;"

    最後に「f.multiline = true;」を追加します。
    試して下さい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください