TOP > AFormAut > Fields.Add メソッド
説明
1つのフィールドを追加します。
追加できるフィールドは テキストボックス、ボタン、コンボボックス、リストボックス、チェックボックス、ラジオボタン、シグネチャ です。
形式
LPDISPATCH Add (LPCTSTR bstrFieldName ,
LPCTSTR bstrFieldType ,
short pageNum ,
float left ,
float top ,
float right ,
float bottom);
引数
- 第一引数 (LPCTSTR bstrFieldName) :
フィールドの名称
例 : “Text1“ "Name.First"
- 第二引数 (LPCTSTR bstrFieldType) :
フィールドの以下のタイプ- "text” : テキストボックス
- "button” : ボタン
- "combobox” : コンボボックス
- "listbox” : リストボックス
- "checkbox” : チェックボックス
- "radio button” : ラジオボタン
- "signature" : 電子著名
- 第三引数 (short pageNum) :
該当するPDF のページ番号
1ページはゼロから
- 第四引数 (float left) :
PDFページ上の座標:左
- 第五引数 (float top) :
PDFページ上の座標:上
- 第六引数 (float right) :
PDFページ上の座標:右
- 第七引数 (float bottom) :
PDFページ上の座標:下
戻り値
- 追加されたフィールドオブジェクト。
- 指定したPDF には該当するフィールドが追加される。
動作するバージョン
Adobe Acrobat | 結果 | 備考 |
---|---|---|
4 | NO | Acrobat 4.0 ※Windows 98SE + Excel 2000 *1 ※古いPDFのバージョンはOK! |
5 | NO | Acrobat 5.0.5 + Excel 2003 *1 ※古いPDFのバージョンはOK |
6 | NO | Acrobat 6.0.6 Pro + Excel 2003 *1 ※古いPDFのバージョンはOK |
7 | OK | Acrobat 7.1.4 Pro + Excel 2003 *2 ※レジストリ操作で全面的に可能になる |
8 | NO | Acrobat 8.3.1 Pro + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
9 | NO | Acrobat 9.5.2 Extended + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
10 | OK | Acrobat X (10.1.4) Extended + Excel 2003 |
11 | OK | Acrobat XI (11.0) Extended + Excel 2003 |
- OK : 正常処理する。
- NO : 動作しない。 又は実行時にエラーになる。
- *1 : 「PDF のバージョン」によっては正常処理出来ない場合がある。
詳細は下の 注意 を参照ください。 - *2 : 全ての「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
サンプル:Excel のVBA
説明 : PDF の全ページにテキストボックスを追加します。
- F8 キーでステップ実行しながら動作確認します。
- 事前に 参照設定(AFormAutの追加版) が必要です。
変数の宣言 Integer は Long でご使用ください。
001 Option Explicit
002
003 Sub AFormApp_Field_Add_01()
004 On Error GoTo Err_AFormApp_Field_Add_01:
005
006 Dim i As Integer
007 Dim iPageNum As Integer
008 Dim bRet As Boolean
009 Dim bEnd As Boolean
010 Dim sFilePath_new As String
011
012 Dim objAFormApp As AFORMAUTLib.AFormApp
013 Dim objAFormFields As AFORMAUTLib.Fields
014 Dim objAFormField As AFORMAUTLib.Field
015
016 '初期値
017 Const sFilePath = "C:\work\sample.pdf"
018 bEnd = True
019
020 If Dir$(sFilePath, vbNormal) = "" Then
021 MsgBox sFilePath & vbCrLf & _
022 "ファイルが存在しない。", _
023 vbOKOnly + vbCritical, "実行時のエラー"
024 Exit Sub
025 End If
026
027 'Acrobatオブジェクトの定義&作成
028
029 'Acrobat 4,5,6 の時
030 ' Dim objAcroApp As Acrobat.CAcroApp
031 ' Dim objAcroAVDoc As Acrobat.CAcroAVDoc
032 ' Dim objAcroPDDoc As Acrobat.CAcroPDDoc
033 ' Dim objAcroPDPage As Acrobat.CAcroPDPage
034 ' Dim objAcroPoint As Acrobat.CAcroPoint
035 ' Set objAcroApp = CreateObject("AcroExch.App")
036 ' Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
037 ' Set objAcroPDDoc = CreateObject("AcroExch.PDDoc")
038
039 'Acrobat 7,8,9,10,11 の時
040 Dim objAcroApp As New Acrobat.AcroApp
041 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
042 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
043 Dim objAcroPDPage As Acrobat.AcroPDPage
044 Dim objAcroPoint As Acrobat.AcroPoint
045
046 '※CreateObject("AFormAut.App")のエラー
047 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
048 '※回避用 / メモリにAcrobatを強制ロードさせる
049 objAcroApp.CloseAllDocs
050
051 '処理対象のPDFファイルを開く
052 bRet = objAcroAVDoc.Open(sFilePath, "")
053
054 If bRet = False Then
055 MsgBox "AVDocオブジェクトはOpen出来ません", _
056 vbOKOnly + vbCritical, "処理エラー"
057 bEnd = False
058 GoTo Skip_AFormApp_Field_Add_01:
059 End If
060
061 Set objAFormApp = CreateObject("AFormAut.App")
062 Set objAFormFields = objAFormApp.Fields
063 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
064 iPageNum = objAcroPDDoc.GetNumPages
065
066 For i = 0 To iPageNum - 1
067
068 'PDFページサイズを取得
069 Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
070 Set objAcroPoint = objAcroPDPage.GetSize
071
072 'PDFの指定ページにテキストフィールドを追加
073 '※ページ全体を覆うテキストボックス
074 Set objAFormField = _
075 objAFormFields.Add("Text" & (i + 1), "text", _
076 i, 0, objAcroPoint.y, objAcroPoint.x, 0)
077
078 'テキストフィールドの設定
079 With objAFormField
080 .SetBackgroundColor "RGB", 1, 1, 1, 0
081 .Alignment = "center"
082 .TextFont = "HeiseiMin-W3-UniJIS-UCS2-H"
083 .Value = "閲覧不可" '表示する文字
084 .IsReadOnly = True '読み込み専用
085 .IsHidden = False '表示
086 End With
087
088 '設定後に開放
089 Set objAFormField = Nothing
090
091 Next
092
093 'PDFファイルを別名で保存
094 sFilePath_new = Replace(sFilePath, ".pdf", "_new.pdf")
095 bRet = objAcroPDDoc.Save(1, sFilePath_new)
096 If bRet = False Then
097 MsgBox "PDFファイルへ保存出来ませんでした", _
098 vbOKOnly + vbCritical, "エラー"
099 bEnd = False
100 End If
101
102 'PDFファイルを閉じる
103 bRet = objAcroAVDoc.Close(False)
104 If bRet = False Then
105 MsgBox "AVDocオブジェクトはClose出来ませんでした", _
106 vbOKOnly + vbCritical, "処理エラー"
107 bEnd = False
108 End If
109
110 Skip_AFormApp_Field_Add_01:
111 On Error Resume Next
112 '変更しないで閉じます。
113 bRet = objAcroAVDoc.Close(False)
114
115 'Acrobatアプリケーションの終了
116 objAcroApp.Hide
117 objAcroApp.Exit
118
119 'オブジェクトの開放
120 Set objAFormFields = Nothing
121 Set objAFormApp = Nothing
122 Set objAcroPDPage = Nothing
123 Set objAcroPoint = Nothing
124 Set objAcroPDDoc = Nothing
125 Set objAcroAVDoc = Nothing
126 Set objAcroApp = Nothing
127
128 If bEnd = True Then
129 MsgBox "処理は正常に終了しました。", _
130 vbOKOnly + vbInformation, "正常終了"
131 End If
132 Exit Sub
133
134 Err_AFormApp_Field_Add_01:
135
136 MsgBox Err.Number & vbCrLf & Err.Description, _
137 vbOKOnly + vbCritical, "実行時のエラー"
138 bEnd = False
139 GoTo Skip_AFormApp_Field_Add_01:
140
141 End Sub
142
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
実行結果
テキストボックス(フィールド)をページ全体を隠す様に貼り付けました。
備考
- このAdd メソッドの後でフィールドオブジェクトの詳細なプロパティを設定する必要があります。
注意
- 全OLEを実行する前に
objAcroApp.CloseAllDocs
で強制的にAcrobat アプリケーションをメモリ上にロードしないと
Set objAFormApp = CreateObject("AFormAut.App")
で実行エラー(ランタイムエラー)が発生する場合があります。
429 ActiveXコンポーネントはオブジェクトを作成できません。
動作確認の環境
- Acrobat 4.0 + Office 2000
+ Windows98SE( + WindowsUpdate) - Acrobat 5.0.5 + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 6.0.6 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 7.1.4 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP2 + WindowsUpdate) - Acrobat 8.3.1 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 9.5.2 Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat X (10.1.4) Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat XI (11.0) Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate)
Adobe Web 解説 URL(英語)
http://livedocs.adobe.com/acrobat_sdk/10/Acrobat10_HTMLHelp/IAC_API_FormsIntro.107.43.html
- Acrobat Forms APIReference
Technical Note #5181 Version : Acrobat 6.0 (英語版)http://partners.adobe.com/public/developer/en/acrobat/sdk/FormsAPIReference.pdf#nameddest=G14.1031234
< 戻る >
管理人のメモ : テストの詳細なデータ
サイト管理人の記録&メモなので、見なくても結構です。
- E1:AVDoc.OpenはOK,
CreateObject("AFormAut.App")
で実行エラー:Runtime rror
(429 ActiveXコンポーネントはオブジェクトを作成できません。) - E2:AVDoc.OpenはOK,
Set objAFormFields = objAFormApp.Fields
で実行エラー(-2147220991 Runtime rror) - E3:AVDoc.OpenはOKだが、Acrobat本体が起動され
「このファイルは、このバージョンのAcrobatではサポートされてない・・・」
ダイアログボックスが表示される。
OKボタンをクリックした後のAcrobat本体をすぐに終了すれば、正常終了。
Acrobat本体をしばらくそのままにしておくと、OLEエラーになり、
次に実行エラー(-2147220991 Runtime rror)となる。 - E4:OLE待機になる。
- E5:AVDoc.OpenはOKだが、Acrobat本体が起動され無いで
「このファイルは、このバージョンのAcrobatではサポートされてない・・・」
ダイアログボックスが表示される。
OKをクリックすると正常処理される。 - E6:objAcroAVDoc.Open(sFilePath, "")で
「この文書を開くときにエラーが発生しました。ファイルが壊れています。修復できませんでした。」
で処理続行不可。
- ▼Acrobat 4 + Excel 2000 + Win98SE 環境 ★環境不可★
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK
sample-1.6.pdf (7) : OK
sample-1.7.pdf (8) : E6
sample-1.7L3.pdf (9) : E6
sample-1.7L8.pdf (10) : E6 - ▼Acrobat 5 + Excel 2003 + WinXP 環境 ★環境不可★
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK,
sample-1.6.pdf (7) : OK,E5
sample-1.7.pdf (8) : E6
sample-1.7L3.pdf (9) : E6
sample-1.7L8.pdf (10) : E6 - ▼Acrobat 6 + Excel 2003 + WinXP 環境 ★環境不可★
※レジストリ操作不可・不良
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK
sample-1.6.pdf (7) : OK,E5
sample-1.7.pdf (8) : OK,E5
sample-1.7L3.pdf (9) : OK,E5
sample-1.7L8.pdf (10) : OK,E5 - ▼Acrobat 7 + Excel 2003 + WinXP 環境
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK
sample-1.6.pdf (7) : OK
sample-1.7.pdf (8) : E4,E5 ※idocNewerVersionWarning レジストリを1でOK
sample-1.7L3.pdf (9) : OK,E5 ※idocNewerVersionWarning レジストリを1でOK
sample-1.7L8.pdf (10) : OK,E5 ※idocNewerVersionWarning レジストリを1でOK - ▼Acrobat 8 + Excel 2003 + WinXP 環境 ★環境不可★
sample-1.2.pdf (3) : E2
sample-1.3.pdf (4) : E2 ※idocNewerVersionWarning レジストリを1もNG
sample-1.4.pdf (5) : E2
sample-1.5.pdf (6) : E2
sample-1.6.pdf (7) : E2
sample-1.7.pdf (8) : E2
sample-1.7L3.pdf (9) : E3 ※idocNewerVersionWarning レジストリを1もNG
sample-1.7L8.pdf (10) : E3 - ▼Acrobat 8 + Excel 2007 + Win7 64bit 環境 ★環境不可★
sample-1.2.pdf (3) : E2
sample-1.3.pdf (4) : E2
sample-1.4.pdf (5) : E2
sample-1.5.pdf (6) : E2
sample-1.6.pdf (7) : E2
sample-1.7.pdf (8) : E2
sample-1.7L3.pdf (9) : E3
sample-1.7L8.pdf (10) : E3 - ▼Acrobat 9 + Excel 2003 + WinXP 環境 ★環境不可★
sample-1.2.pdf (3) : E1
sample-1.3.pdf (4) : E1
sample-1.4.pdf (5) : E2
sample-1.5.pdf (6) : E1
sample-1.6.pdf (7) : E2
sample-1.7.pdf (8) : E2
sample-1.7L3.pdf (9) : E2
sample-1.7L8.pdf (10) : E3 - ▼Acrobat X (10) + Excel 2003 + WinXP 環境
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK
sample-1.6.pdf (7) : OK
sample-1.7.pdf (8) : OK
sample-1.7L3.pdf (9) : OK
sample-1.7L8.pdf (10) : OK - ▼Acrobat XI (11) + Excel 2003 + WinXP 環境
sample-1.2.pdf (3) : OK
sample-1.3.pdf (4) : OK
sample-1.4.pdf (5) : OK
sample-1.5.pdf (6) : OK
sample-1.6.pdf (7) : OK
sample-1.7.pdf (8) : OK
sample-1.7L3.pdf (9) : OK
sample-1.7L8.pdf (10) : OK
< 戻る >