2017-09-17 13 views
0

このエラーは、テキストフォームフィールド(「開発者コントロール」>「従来のフォーム」)(MS Office 2013)を使用して文書にNameプロパティを明示的に書き込もうとした場合に発生します。 Selection.Paste操作 -VBA Word - 重複したテキストフォームのフィールド名を変更する

Sub EditCopiedFormField() 
    Selection.MoveDown Unit:=wdLine, Count:=4, Extend:=wdExtend 
    Selection.Copy 
    Selection.MoveDown Unit:=wdLine, Count:=1 
    Selection.Paste 
    ActiveDocument.FormFields(3).Name = "ID999" 
End Sub 

enter image description here

enter image description here

Selection.CopyActiveDocument.FormFields(i).Nameフィールド書き込み可能ですか?

「テキストフォームフィールド」をコピーして貼り付けた後、Name(UIダイアログのブックマークフィールド)プロパティを読み込んでも問題はありませんが、書けません。 )コピー後に複製、標準エラー受信:それらを含む範囲をコピーした後"ID001":たとえば

Method 'Name' of object 'FormField' failed

を、私は同じNameを持つ2つの「テキストボックスフォームフィールド」を得ました。フォームをダブルクリックして複製を編集すると、複製のName( "Bookmark")が瞬時にクリアされます:""。何の「ブックマーク」UIのメニュー「リンク>ブックマーク」を通じて複製されていないことを指摘し、Name変更前の「ブックマーク」を追加しようとし

`ActiveDocument.Bookmarks.Add("ID999")` 

は、状況を変更しないでください。

これらの重複する名前を変更するにはどうすればよいですか?

答えて

1

私はあなたが持っている難しさを再現することができず、以下のテストを提案しました。

Private Sub ListFields() 

    Dim Fld As FormField 
    Dim i As Integer 

    With ActiveDocument 
     For Each Fld In .FormFields 
      i = i + 1 
      Debug.Print i, Fld.Name, Fld.Result 
     Next Fld 
    End With 
End Sub 

、VBエディタのイミディエイトウィンドウに自分のフォームフィールドのリストを出力します。このコードを実行するインデックス、名前と結果を与えます。名前を変更するフィールドのインデックス番号を指定します。あなたはあなたが望むすべての変更を加えることができるはずです。

+0

を、との行 '場合、私= I0その後Fld.Name =「ID999」エンドIf'を追加重複したフォーム、私はまだ同じエラーが発生しています。 – hyprfrcb

+0

それは意図ではありませんでした。このコードは、フィールドのリストをインデックス番号とともに出力します。名前を変更するには、 'ActiveDocument.FormFields(x).Name =" ID999 "'を実行する必要があります。ここで、xは、変更したいフィールドの名前を識別する印刷リストのインデックス番号です。 – Variatus

+0

はい、私はしました。私はそのリスティングで何か悪いものを見つけませんでした。フィールドが重複している場合、フィールド 'Name'に直接呼び出しを行うとエラーになります。数時間前に行った編集を確認してください。 – hyprfrcb

0

The Anchorageウェブサイトのおかげで、このコードは、トリックを行うに表示されます。このコードを実行した後

ActiveDocument.FormFields(i).Select 
With Dialogs(wdDialogFormFieldOptions) 
    .Name = "ID999" 
    .Execute 
End With 
関連する問題