首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Word MailMerge部分范围

Word MailMerge部分范围
EN

Stack Overflow用户
提问于 2016-06-09 18:25:41
回答 1查看 41关注 0票数 0

我有一个用于Word的VB.NET VSTO AddIn。

在这个项目中,我需要执行一个MailMerge操作,但只针对MergeSource的一部分范围。

在本例中,让我们假设MergeSource包含100个收件人。我想只包括收件人11-20。

通常我会执行以下操作,但这包括所有收件人。

代码语言:javascript
复制
Sub ExecuteMerge(ByRef Doc As Word.Document)
    Doc.MailMerge.Execute(False)
End Sub

我希望能做的事情是这样的:

代码语言:javascript
复制
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只是伪代码,并不是作为属性存在的。

这就是我要找的。如何设置合并中包含的收件人范围?

Word必须能够做到这一点,因为当我手动执行MailMerge时,我会看到以下对话框:

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 19:14:00

我想出来了,你可以在DataSource上设置.FirstRecord.LastRecord

如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37723335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档