VBA Word - 更改重复的文本表单字段名称

VBA Word - Change Duplicated Text Form Field Name

当我尝试在任何带有 "Text Form Field" ("Developer>Controls>Legacy Forms") (MS Office 2013) 的文档中写入 Name 属性 时出现自动化错误:

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 操作后是否可写?

复制和粘贴一些 "Text Form Field" 后,我阅读 Name(UI 对话框中的 "Bookmark" 字段)没有问题 属性 ,但我无法编写它(可能是因为复制后表单域变成了重复),收到标准错误:

Method 'Name' of object 'FormField' failed

例如,在复制包含它们的范围后,我有两个 "Text Form Fields" 具有相同的 Name: "ID001"。通过双击表格编辑副本,副本的 Name ("Bookmark") 立即被清除:"".

尝试在 Name 更改之前添加 "Bookmark",注意 UI 中的菜单 "Links>Bookmarks" 没有复制 "Bookmarks":

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

不改变现状。

我必须如何更改这些重复的名称?

我无法复制您遇到的困难并建议进行以下测试。

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

运行 此代码会将您的 FormFields 列表打印到 VB 编辑器的即时 Window,给出索引、名称和结果。通过索引号找到您希望更改其名称的字段。您应该可以根据需要进行所有更改。

感谢 The Anchorage 网站,这段代码似乎可以解决问题:

ActiveDocument.FormFields(i).Select
With Dialogs(wdDialogFormFieldOptions)
    .Name = "ID999"
    .Execute
End With