AFormAut : Fields.Add メソッド

TOP > AFormAut > Fields.Add メソッド


説明

1つのフィールドを追加します。

追加できるフィールドは テキストボックス、ボタン、コンボボックス、リストボックス、チェックボックス、ラジオボタン、シグネチャ です。

 

形式

LPDISPATCH Add (LPCTSTR bstrFieldName , 
       LPCTSTR bstrFieldType , 
       short pageNum , 
       float left , 
       float top , 
       float right , 
       float bottom);

 

引数

  1. 第一引数 (LPCTSTR bstrFieldName) :
    フィールドの名称
    例 : “Text1“ "Name.First"
     
  2. 第二引数 (LPCTSTR bstrFieldType) :
    フィールドの以下のタイプ
     
    • "text” : テキストボックス
    • "button” : ボタン
    • "combobox” : コンボボックス
    • "listbox” : リストボックス
    • "checkbox” : チェックボックス
    • "radio button” : ラジオボタン
    • "signature" : 電子著名
       
  3. 第三引数 (short pageNum) :
    該当するPDF のページ番号
    1ページはゼロから
     
  4. 第四引数 (float left) :
    PDFページ上の座標:左
     
  5. 第五引数 (float top) :
    PDFページ上の座標:上
     
  6. 第六引数 (float right) :
    PDFページ上の座標:右
     
  7. 第七引数 (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 の全ページにテキストボックスを追加します。

 

Option Explicit

Sub AFormApp_Field_Add_01()
On Error GoTo Err_AFormApp_Field_Add_01:

    Dim i               As Integer
    Dim iPageNum        As Integer
    Dim bRet            As Boolean
    Dim bEnd            As Boolean
    Dim sFilePath_new   As String
    
    Dim objAFormApp     As AFORMAUTLib.AFormApp
    Dim objAFormFields  As AFORMAUTLib.Fields
    Dim objAFormField   As AFORMAUTLib.Field
     
    '初期値
    Const sFilePath = "C:¥work¥sample.pdf"
    bEnd = True
     
    If Dir$(sFilePath, vbNormal) = "" Then
        MsgBox sFilePath & vbCrLf & _
            "ファイルが存在しない。", _
            vbOKOnly + vbCritical, "実行時のエラー"
        Exit Sub
    End If
    
    'Acrobatオブジェクトの定義&作成
    
    'Acrobat 4,5,6 の時
'    Dim objAcroApp    As Acrobat.CAcroApp
'    Dim objAcroAVDoc  As Acrobat.CAcroAVDoc
'    Dim objAcroPDDoc  As Acrobat.CAcroPDDoc
'    Dim objAcroPDPage As Acrobat.CAcroPDPage
'    Dim objAcroPoint  As Acrobat.CAcroPoint
'    Set objAcroApp   = CreateObject("AcroExch.App")
'    Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
'    Set objAcroPDDoc = CreateObject("AcroExch.PDDoc")
     
    'Acrobat 7,8,9,10,11 の時
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc    As New Acrobat.AcroPDDoc
    Dim objAcroPDPage   As Acrobat.AcroPDPage
    Dim objAcroPoint    As Acrobat.AcroPoint
     
    '※CreateObject("AFormAut.App")のエラー
    '※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
    '※回避用 / メモリにAcrobatを強制ロードさせる
    objAcroApp.CloseAllDocs
    
    '処理対象のPDFファイルを開く
    bRet = objAcroAVDoc.Open(sFilePath, "")

    If bRet = False Then
        MsgBox "AVDocオブジェクトはOpen出来ません", _
                vbOKOnly + vbCritical, "処理エラー"
        bEnd = False
        GoTo Skip_AFormApp_Field_Add_01:
    End If
    
    Set objAFormApp = CreateObject("AFormAut.App")
    Set objAFormFields = objAFormApp.Fields
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
    iPageNum = objAcroPDDoc.GetNumPages
     
    For i = 0 To iPageNum ― 1
    
        'PDFページサイズを取得
        Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
        Set objAcroPoint = objAcroPDPage.GetSize
         
        'PDFの指定ページにテキストフィールドを追加
        '※ページ全体を覆うテキストボックス
        Set objAFormField = _
            objAFormFields.Add("Text" & (i + 1), "text", _
                i, 0, objAcroPoint.y, objAcroPoint.x, 0)
         
        'テキストフィールドの設定
        With objAFormField
            .SetBackgroundColor "RGB", 1, 1, 1, 0
            .Alignment = "center"
            .TextFont = "HeiseiMin-W3-UniJIS-UCS2-H"
            .Value = "閲覧不可" '表示する文字
            .IsReadOnly = True  '読み込み専用
            .IsHidden = False   '表示
        End With
         
        '設定後に開放
        Set objAFormField = Nothing
        
    Next
     
    'PDFファイルを別名で保存
    sFilePath_new = Replace(sFilePath, ".pdf", "_new.pdf")
    bRet = objAcroPDDoc.Save(1, sFilePath_new)
    If bRet = False Then
        MsgBox "PDFファイルへ保存出来ませんでした", _
            vbOKOnly + vbCritical, "エラー"
        bEnd = False
    End If
     
    'PDFファイルを閉じる
    bRet = objAcroAVDoc.Close(False)
    If bRet = False Then
        MsgBox "AVDocオブジェクトはClose出来ませんでした", _
                vbOKOnly + vbCritical, "処理エラー"
        bEnd = False
    End If
     
Skip_AFormApp_Field_Add_01:
On Error Resume Next
    '変更しないで閉じます。
    bRet = objAcroAVDoc.Close(False)
    
    'Acrobatアプリケーションの終了
    objAcroApp.Hide
    objAcroApp.Exit
    
    'オブジェクトの開放
    Set objAFormFields = Nothing
    Set objAFormApp = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPoint = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing
     
    If bEnd = True Then
        MsgBox "処理は正常に終了しました。", _
            vbOKOnly + vbInformation, "正常終了"
    End If
    
    Exit Sub
     

Err_AFormApp_Field_Add_01:
    
    MsgBox Err.Number & vbCrLf & Err.Description, _
            vbOKOnly + vbCritical, "実行時のエラー"
    
    bEnd = False
    GoTo Skip_AFormApp_Field_Add_01:
    
End Sub

 

※ソースコードHTML変換:SourceConverter

 

 


実行結果

 

テキストボックス(フィールド)をページ全体を隠す様に貼り付けました。

AFormAut.Fields.Add 実行結果

 

備考

  1. このAdd メソッドの後でフィールドオブジェクトの詳細なプロパティを設定する必要があります。

 

注意

  1. 全OLEを実行する前に
    objAcroApp.CloseAllDocs
    で強制的にAcrobat アプリケーションをメモリ上にロードしないと
    Set objAFormApp = CreateObject("AFormAut.App")
    で実行エラー(ランタイムエラー)が発生する場合があります。
    429 ActiveXコンポーネントはオブジェクトを作成できません。
    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(英語)

 

 

戻る

 


管理人のメモ : テストの詳細なデータ

 

サイト管理人の記録&メモなので、見なくても結構です。

  

  1. E1:AVDoc.OpenはOK,
       CreateObject("AFormAut.App")
    で実行エラー:Runtime rror
       (429 ActiveXコンポーネントはオブジェクトを作成できません。)
  2. E2:AVDoc.OpenはOK,
       Set objAFormFields = objAFormApp.Fields
       で実行エラー(-2147220991 Runtime rror)
  3. E3:AVDoc.OpenはOKだが、Acrobat本体が起動され
       「このファイルは、このバージョンのAcrobatではサポートされてない・・・」
       ダイアログボックスが表示される。
       OKボタンをクリックした後のAcrobat本体をすぐに終了すれば、正常終了。
       Acrobat本体をしばらくそのままにしておくと、OLEエラーになり、
       次に実行エラー(-2147220991 Runtime rror)となる。
  4. E4:OLE待機になる。
  5. E5:AVDoc.OpenはOKだが、Acrobat本体が起動され無いで
       「このファイルは、このバージョンのAcrobatではサポートされてない・・・」
       ダイアログボックスが表示される。
       OKをクリックすると正常処理される。
  6. 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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れるとエラーになる場合が有ります。その時はコードの前後に <code> ・・・</code> タグを入れてください。

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