从 Word 文档中读取 MailMerge 字段

时间:2021-04-22 16:54:40

标签: vba ms-word

我正在尝试编写一个 VBA 脚本,该脚本将读取 MS Word 文档中 merge 字段 的值。该字段的代码是:

{MERGEFIELD  Vendor_ID \* MERGEFORMAT}

我尝试通过 MailMergeField 访问它:

' No access by ID, must use an index:
ActiveDocument.MailMerge.Fields(1)

但是这个对象似乎没有提供值。然后我尝试通过 MailMergeDataField 做同样的事情,但还是徒劳,因为文档没有数据字段,即

ActiveDocument.MailMerge.DataSource.DataFields.Count = 0

最后,我努力按照 DataFields 文档中的示例进行操作,却发现数据源没有记录:

ActiveDocument.MailMerge.DataSource.RecordCount = -1

现在我放弃并请求您帮助读取合并字段的值。 Here 是一个示例文档,我试图从中读取 Vendor_ID 合并字段的值—400775。请注意,它已经包含一些我失败的尝试的 VBA 代码。 bookmark V_Vendor_Number 包含该值,但我明确要求不使用书签。

1 个答案:

答案 0 :(得分:1)

如果您的文档在打开时没有显示邮件合并 SQL 提示,则它不是邮件合并主文档并且未连接到数据源。因此,您剩下的就是通读字段集合以找到您感兴趣的那个。您也可以对连接到数据源的邮件合并主文档采取相同的方法。例如:

Sub Demo()
Dim Fld As Field
For Each Fld In ActiveDocument.Fields
  With Fld
    If .Type = wdFieldMergeField Then
      If Trim(Split(Split(.Code.Text, "MERGEFIELD ")(1),"\")(0)) = "Vendor_ID" Then
        MsgBox .Result.Text: Exit For
      End If
    End If
  End With
Next
End Sub