AFormAut : Remove メソッド

TOP > AFormAut > *


説明

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

AFormAut : Remove メソッド PDF上の上2つのフィールドを削除する。

形式

void Remove  ( LPCTSTR  bstrFieldName ) ;

引数

  1. 第一引数 ( LPCTSTR  bstrFieldName ) :
    フィールド名。
    指定したフィールド名をAcrobatのフォームから削除します。
    フィールド名は複数の子フィールドを持つ場合はそれも全てが削除されます。複数のフィールドが同じ名前を持っている場合も全てが削除されます。

例:"Text1"  と指定すると、"Text1." のフィールド名が頭に付いたのは削除されます。つまり、"Text1.AA"、"Text1.url"、"Text1.name"、等は削除されます。"Text1-AA"、"Text1url"、"Text1name" は削除されません。

戻り値

  • 無し。

動作するバージョン

Acrobat動作備考
4NOAcrobat 4.0 ※Windows 98SE + Excel 2000 *1
※古いPDFのバージョンはOK!
5NOAcrobat 5.0.5 + Excel 2003 *1
※古いPDFのバージョンはOK
6NOAcrobat 6.0.6 Pro + Excel 2003 *1
※古いPDFのバージョンはOK
7OKAcrobat 7.1.4 Pro + Excel 2003 *2 
※レジストリ操作で全面的に可能になる
8NOAcrobat 8.3.1 Pro + Excel 2003
※当Acrobatバージョンでは全面的に不可
9NOAcrobat 9.5.5 Extended + Excel 2003
※当Acrobatバージョンでは全面的に不可
10OKAcrobat X (10.1.8) Extended + Excel 2003
11OKAcrobat 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 : Remove メソッド
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 」 は残ります。 
      
AFormAut : Remove メソッド 実行結果

2. Acrobat X (10.1.8)

Acrobat 7.1.4 と結果は同じ。

3. Acrobat XI (11.0.5)

Acrobat 7.1.4 と結果は同じ。

備考

  1. Remove メソッドは連続で実行しても構わないです。但し、既に削除されて存在しないフィールド名を指定すると当然ですが実行エラーになります。

注意事項

  1. Remove の引数で該当するフィールド名が存在しないと実行エラーになります。
    実行時エラー '-2147319765 (8002802b)'

    Microsoft Visual Basic
    実行時エラー '-2147319765 (8002802b)'
    'Remove' メソッドは失敗しました: 'IFields' オブジェクト

      
  2. Acrobat 7 環境下でAVDoc.Close でPDFファイルの保存をしてはダメです。
    lRet = objAcroAVDoc.Close(0)
    OLE(IAC)が処理出来なくなり、以下のメッセージを出して終了出来なくなります。
    Microsoft Excel 別のプログラムでOLEの操作が完了するまで待機を続けます。

    Microsoft Excel 別のプログラムでOLEの操作が完了するまで待機を続けます。

Adobe Web 解説

OLE Automation / AFormAut / Remove (公式サイト・英語)

戻る

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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