首页 > 解决方案 > 如何在 VBA 代码中按名称引用 Word 字段?

问题描述

我想使用 VBA 更新单词字段内容。我已经有一个可以工作的代码,但是我必须引用字段的索引而不是字段的名称,我更喜欢这样。

我的代码如下:

Sub UpdateField()
  Dim myString As String
  myString = "asdf"
  ActiveDocument.Fields(1).Result.Text = myString
End Sub

假设该字段的名称是 MyField1。以下代码将不起作用(我得到运行时错误'13':类型不匹配'。

Sub UpdateField()
  Dim myString As String
  myString = "asdf"
  ActiveDocument.Fields("MyField1").Result.Text = myString
End Sub

我从文件菜单 > 信息 > 高级属性 > 自定义选项卡创建我的单词字段。

那么,当我们要更新其内容时,如何引用该字段的名称呢?

标签: vbams-wordword-field

解决方案


这些是DocProperty字段。如果按 Alt+F9,您将看到域代码

字段引用(DocProperty链接到)文档属性。文档属性具有名称,但这不会“命名”该字段。也不能直接更新字段,DocProperty因为它链接到文档属性。可以使它暂时显示其他内容,但是在更新字段时这将丢失。

为了更新一个DocProperty字段,有必要更新底层的文档属性。例如

Sub EditDocPropUpdateDocPropertyField()
    Dim doc As Word.Document
    Dim prop As Office.DocumentProperty
    Dim propName As String
    Dim newPropValue As String

    Set doc = ActiveDocument
    propName = "MyField"
    newPropValue = "new value"
    Set prop = doc.CustomDocumentProperties(propName)
    prop.value = newPropValue
    doc.Fields.Update

End Sub

推荐阅读