2016-06-09 3 views
0

Word 용 VB.NET VSTO AddIn이 있습니다.Word MailMerge 부분 범위

이 프로젝트에서는 MergeSource의 부분 범위에 대해서만 MailMerge 작업을 실행해야합니다.

이 예에서는 MergeSource에 수신자가 100 명 있다고 가정합니다. 받는 사람 11-20 만 포함하려고합니다.

일반적으로 다음을 수행하지만, 여기에는 모든 수신자가 포함됩니다.

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는 의사 코드, 그것은 속성으로 존재하지 않는 내가 할 수 있도록하고 싶습니다 무엇

Sub ExecuteMerge(ByRef Doc As Word.Document) 
    Doc.MailMerge.Execute(False) 
End Sub 

,이 같은 것입니다.

이것은 내가 찾고있는 것입니다. 병합에 포함 할받는 사람 범위를 어떻게 설정합니까? MailMerge dialog 11-20

답변

1

내가 그것을 알아 냈어, 당신은 DataSource.FirstRecord.LastRecord을 설정할 수 있습니다

말씀은 내가 직접 편지 병합을 수행 할 때, 나는이 대화 상자를 얻을 수 있기 때문에,이 작업을 수행 할 수 있어야합니다.

과 같이 :

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