我正在尝试编写一个 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
包含该值,但我明确要求不使用书签。
答案 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