从 Word 文档中读取 MailMerge 字段

Reading a MailMerge field from a Word document

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

{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 is a sample document from which I am trying to read the value of the Vendor_ID merge field—400775. Beware that it already contains some VBA code with my failed attempts. The bookmark V_Vendor_Number 包含该值,但我明确要求不要使用书签。

如果您的文档在您打开时没有显示邮件合并 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