説明
指定したフィールドを削除します。

形式
void Remove ( LPCTSTR bstrFieldName ) ;
引数
- 第一引数 ( LPCTSTR bstrFieldName ) :
フィールド名。
指定したフィールド名をAcrobatのフォームから削除します。
フィールド名は複数の子フィールドを持つ場合はそれも全てが削除されます。複数のフィールドが同じ名前を持っている場合も全てが削除されます。
例:"Text1" と指定すると、"Text1." のフィールド名が頭に付いたのは削除されます。つまり、"Text1.AA"、"Text1.url"、"Text1.name"、等は削除されます。"Text1-AA"、"Text1url"、"Text1name" は削除されません。
戻り値
- 無し。
動作するバージョン
| 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.5 Extended + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
| 10 | OK | Acrobat X (10.1.8) Extended + Excel 2003 |
| 11 | OK | Acrobat XI (11.0.5) Extended + Excel 2003 |
- OK : 正常処理。
- NO : 動作しない。 又は実行時にエラーになります。
- *1 : 「PDF のバージョン」によっては正常処理出来ない場合があります。
- *2 : 処理前のレジストリに以下を追加する必要があります。
[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上のフィールド名「 Text1.email 」、「Text1.name 」、「Text2.email 」を削除します。

- 事前に 参照設定(AFormAutの追加版) が必要です。
- F8 キーでステップ実行しながら動作確認します。
001 Option Explicit
002
003 Public Const PDSaveFull = &H1
004 Public Const PDSaveLinearized = &H4
005 Public Const PDSaveCollectGarbage = &H20
006
007 Sub AFormAut_Remove_test()
008
009 Dim lRet As Long
010
011 Const CON_PDF_FILE = "D:\work\VBJavaScript.pdf"
012 Const CON_PDF_FI_S = "D:\work\VBJavaScript-S.pdf"
013
014 'Acrobatオブジェクトの定義&作成
015 Dim objAcroApp As New Acrobat.AcroApp
016 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
017 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
018
019 Dim objAFormApp As New AFORMAUTLib.AFormApp
020 Dim objAFormFields As AFORMAUTLib.Fields
021
022 '※CreateObject("AFormAut.App")のエラー
023 '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
024 '※回避用 / メモリにAcrobatを強制ロードさせる
025 objAcroApp.CloseAllDocs
026 objAcroApp.Hide
027
028 '*―――――――――――――――――――--
029 '* PDFファイルを開く
030
031 '処理対象のPDFファイルを開く
032 '※AVDocでOpenしないと"AFormAut.App"で実行エラー
033 lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
034 If lRet = 0 Then
035 MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
036 CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
037 GoTo Skip_AFormAut_Remove_test:
038 End If
039
040 '*―――――――――――――――――――--
041 '* AFormオブジェクトの作成
042
043 ' Set objAFormApp = CreateObject("AFormAut.App")
044 Set objAFormFields = objAFormApp.Fields
045
046 '*―――――――――――――――――――--
047 '* テキスト・フィールドを削除
048
049 objAFormFields.Remove "Text1"
050 objAFormFields.Remove "Text2"
051
052 Skip_AFormAut_Remove_test:
053
054 '*―――――――――――――――――――--
055 '* 終了処理
056
057 '変更したPDFファイルの保存はPDDoc.Saveで必ず行う
058 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
059 lRet = objAcroPDDoc.Save( _
060 PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
061 CON_PDF_FI_S)
062 If lRet = 0 Then
063 MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
064 CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
065 End If
066
067 'AVDocを閉じる
068 lRet = objAcroAVDoc.Close(1)
069
070 'Acrobatアプリケーションの終了
071 objAcroApp.Hide
072 objAcroApp.Exit
073
074 'オブジェクトの開放
075 Set objAFormFields = Nothing
076 Set objAFormApp = Nothing
077 Set objAcroAVDoc = Nothing
078 Set objAcroApp = Nothing
079
080 MsgBox "End Sub"
081
082 End Sub
実行結果
1. Acrobat 7.1.4
- フィールド名「 Text1.email 」、「Text1.name 」、「Text2.email 」は削除され、「 Text1.sonota 」 は残ります。

2. Acrobat X (10.1.8)
Acrobat 7.1.4 と結果は同じ。
3. Acrobat XI (11.0.5)
Acrobat 7.1.4 と結果は同じ。
備考
- Remove メソッドは連続で実行しても構わないです。但し、既に削除されて存在しないフィールド名を指定すると当然ですが実行エラーになります。
注意事項
- Remove の引数で該当するフィールド名が存在しないと実行エラーになります。

Microsoft Visual Basic
実行時エラー '-2147319765 (8002802b)'
'Remove' メソッドは失敗しました: 'IFields' オブジェクト
- Acrobat 7 環境下でAVDoc.Close でPDFファイルの保存をしてはダメです。
lRet = objAcroAVDoc.Close(0)
OLE(IAC)が処理出来なくなり、以下のメッセージを出して終了出来なくなります。
Microsoft Excel 別のプログラムでOLEの操作が完了するまで待機を続けます。
Adobe Web 解説
OLE Automation / AFormAut / Remove (公式サイト・英語)
< 戻る >