AFormAut : Remove メソッド

TOP > AFormAut > Remove メソッド


説明

PDF 上のAcrobat フォームとFields コレクションから指定したフィールドを削除します。

 

AFormAut : Remove メソッド 2つのフィールドを削除

  

形式

void Remove  ( LPCTSTR  bstrFieldName ) ;

 

引数

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

"Text1"  と指定すると、"Text1." のフィールド名が頭に付いたのは削除されます。

つまり、"Text1.AA"、"Text1.url"、"Text1.name"、等は削除されます。

"Text1-AA"、"Text1url"、"Text1name" は削除されません。

 

戻り値

  • 無し。

 

動作するバージョン

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.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 : Remove メソッド   

   

Option Explicit

Public Const PDSaveFull = &H1
Public Const PDSaveLinearized = &H4
Public Const PDSaveCollectGarbage = &H20

Sub AFormAut_Remove_test()

    Dim lRet            As Long
    
    Const CON_PDF_FILE = "D:¥work¥VBJavaScript.pdf"
    Const CON_PDF_FI_S = "D:¥work¥VBJavaScript-S.pdf"
    
    'Acrobatオブジェクトの定義&作成
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc    As New Acrobat.AcroPDDoc
     
    Dim objAFormApp     As AFORMAUTLib.AFormApp
    Dim objAFormFields  As AFORMAUTLib.Fields
    
    '※CreateObject("AFormAut.App")のエラー
    '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
    '※回避用 / メモリにAcrobatを強制ロードさせる
    objAcroApp.CloseAllDocs
    
    '*―――――――――――――――――――--
    '* PDFファイルを開く
    
    '処理対象のPDFファイルを開く
    '※AVDocでOpenしないと"AFormAut.App"で実行エラー
    lRet = objAcroAVDoc.Open(CON_PDF_FILE, "")
    If lRet = 0 Then
        MsgBox "AVDocオブジェクトはOpen出来ません" & vbCrLf & _
            CON_PDF_FILE, vbOKOnly + vbCritical, "処理エラー"
        GoTo Skip_AFormAut_Remove_test:
    End If
    
    '*―――――――――――――――――――--
    '* AFormオブジェクトの作成
    
    Set objAFormApp = CreateObject("AFormAut.App")
    Set objAFormFields = objAFormApp.Fields
    
    '*―――――――――――――――――――--
    '* テキスト・フィールドを削除
    
    objAFormFields.Remove "Text1"
    objAFormFields.Remove "Text2"
    
Skip_AFormAut_Remove_test:

    '*―――――――――――――――――――--
    '* 終了処理
    
    '変更したPDFファイルの保存はPDDoc.Saveで必ず行う
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
    lRet = objAcroPDDoc.Save( _
        PDSaveFull + PDSaveCollectGarbage + PDSaveLinearized, _
        CON_PDF_FI_S)
    If lRet = 0 Then
        MsgBox "05: PDFファイルへ保存出来ませんでした" & vbCrLf & _
            CON_PDF_FI_S, vbOKOnly & vbCritical, "エラー"
    End If
    
    'AVDocを閉じる
    lRet = objAcroAVDoc.Close(1)
    
    'Acrobatアプリケーションの終了
    objAcroApp.Hide
    objAcroApp.Exit
    
    'オブジェクトの開放
    Set objAFormFields = Nothing
    Set objAFormApp = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing
    
    MsgBox "End Sub"

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 解説 URL(英語)

 

戻る

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン