我有一个VB.NET VSTO AddIn for Word。
在这个项目中,我需要执行MailMerge操作,但仅适用于部分范围的MergeSource。
在这个例子中,我们假设MergeSource包含100个收件人。 我想只包括收件人11-20。
通常我会执行以下操作,但这包括所有收件人。
Sub ExecuteMerge(ByRef Doc As Word.Document)
Doc.MailMerge.Execute(False)
End Sub
我希望能够做到的是这样的事情:
Sub ExecuteMerge(ByRef Doc As Word.Document, Optional StartPos As Integer = 0, Optional EndPos As Integer = 0)
If StartPos > 0 AndAlso StartPos <= Doc.MailMerge.DataSource.RecordCount Then
Doc.MailMerge.StartPosition = StartPos
Else
Doc.MailMerge.StartPosition = 1
End If
If EndPos > StartPos AndAlso EndPos <= Doc.MailMerge.DataSource.RecordCount Then
Doc.MailMerge.EndPosition = EndPos
Else
Doc.MailMerge.EndPosition = Doc.MailMerge.DataSource.RecordCount
End If
Doc.MailMerge.Execute(False)
End Sub
注意:.StartPosition
和.EndPosition
只是伪代码,它不作为属性存在。
这就是我要找的东西。如何设置要包含在合并中的收件人范围?
答案 0 :(得分:1)
我弄明白了,您可以在.FirstRecord
上设置.LastRecord
和DataSource
。
像这样:
Sub ExecuteWordMailMerge(ByRef Doc As Word.Document, Optional StartPos As Integer = 0, Optional EndPos As Integer = 0)
If StartPos > 0 AndAlso StartPos <= Doc.MailMerge.DataSource.RecordCount Then
Doc.MailMerge.DataSource.FirstRecord = StartPos
Else
Doc.MailMerge.DataSource.FirstRecord = 1
End If
If EndPos > StartPos AndAlso EndPos <= Doc.MailMerge.DataSource.RecordCount Then
Doc.MailMerge.DataSource.LastRecord = EndPos
Else
Doc.MailMerge.DataSource.LastRecord = Doc.MailMerge.DataSource.RecordCount
End If
Doc.MailMerge.Execute(False)
End Sub