从 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
我正在尝试编写一个 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