通过明确尝试使用“文本表单字段”(“开发人员>控件>旧表单”)在任何文档中编写Name
属性来获取此错误(MS Office 2013):
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
ActiveDocument.FormFields(i).Name
- Selection.Copy
操作后Selection.Paste
字段是否可写?
复制并粘贴一些“文本表单字段”后,我通过阅读Name
(UI对话框中的“书签”字段)属性没有任何问题,但我无法编写它(可能因为复制后表单字段变为重复),收到标准错误:
Method 'Name' of object 'FormField' failed
例如,在复制包含它们的范围后,我得到了两个“文本表单字段”,具有相同的Name
:"ID001"
。通过双击表单编辑副本,副本的Name
(“书签”)即时清除:""
。
尝试在Name
更改之前添加“书签”,并注意到UI中的“链接>书签”菜单没有复制“书签”:
`ActiveDocument.Bookmarks.Add("ID999")`
不要改变这种情况。
我该怎么做才能更改这些重复名称?
答案 0 :(得分: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
运行此代码会将您的FormField列表打印到VB编辑器的立即窗口,给出索引,名称和结果。通过索引号对要更改其名称的字段进行寻址。您应该可以进行所需的所有更改。
答案 1 :(得分:0)
感谢The Anchorage网站,此代码似乎可以解决问题:
ActiveDocument.FormFields(i).Select
With Dialogs(wdDialogFormFieldOptions)
.Name = "ID999"
.Execute
End With