Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Mailmerge and Fax / April 2005

Tip: Looking for answers? Try searching our database.

Mail merge fields

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Pam in California - 20 Apr 2005 22:03 GMT
I am creating a confirmation document and would like to have attendees from
the same company listed in the body of the confirmation without having to use
the query function in merge.  I tried using "next record" but that added
attendees from another company.  What I would like is one sheet per company
with a listing of the attendees (there are two-three per company).  I tried
having the document be a form letter and a catalog.  The result wasn't want I
wanted.  I'm using Word 2000.

Thanks for any help or direction you can give me.
-pam
frandalc@swbell.net - 21 Apr 2005 00:06 GMT
I just did something like this, and since word mail merge is built as a
one to one replacement of data with fields, not repeating data, you
need to get a little tricky with VBA.

Basically, what I did was handle the MailMergeAfterRecordMerge and
MailMergeBeforeRecordMerge events in the mail merge document template.
In the MailMergeAfterRecordMerge I check the datasource values to see
if I need to add any values to a table, if I do, then I add those
values while getting the next record until I detect that I have come to
the next data element that needs to be merged. Below I've included the
full source code, it works great - oh, and you need to handle the
MailMergeBeforeRecordMerge because as you advance to the next element
in your datasource the damn thing will try and fire the merge even
though you are currently in the event to handle it!

' Global variables
Public WithEvents MailMergeApp As Word.Application
Public ActDoc As Document
Public NewDoc As Document
Public CancelMerge As Boolean

Private Sub MailMergeApp_MailMergeAfterRecordMerge(ByVal Doc As
Document)

   Dim mergeDataTable As Table
   Dim mergeData As MailMergeDataSource
   Dim eventId As Integer
   Dim nextEventId As Integer
   Dim g As Integer

   If ActDoc Is Nothing Then
       For g = 1 To MailMergeApp.Documents.Count
           If MailMergeApp.Documents(g).Name =
"ClientSummaryLetter.doc" Then
               Set ActDoc = MailMergeApp.Documents(g)
           End If

           If MailMergeApp.Documents(g).Name <>
"ClientSummaryLetter.doc" And _
           MailMergeApp.Documents(g).Name <> "mergedatasource.doc"
Then
               Set NewDoc = MailMergeApp.Documents(g)
           End If
       Next
   End If

   For g = 1 To NewDoc.Tables.Count
       If NewDoc.Tables(g).Rows.Count = 1 Then
           Set mergeDataTable = NewDoc.Tables(g)
           Exit For
       End If
   Next

   Set mergeData = ActDoc.MailMerge.DataSource

   eventId = CInt(ActDoc.MailMerge.DataSource.DataFields(8).Value)
   nextEventId = CInt(ActDoc.MailMerge.DataSource.DataFields(8).Value)
   CancelMerge = True

   While eventId = nextEventId

       newrow = mergeDataTable.Rows.Add()
       mergeDataTable.Cell(mergeDataTable.Rows.Count,
1).Range.InsertAfter (mergeData.DataFields(9).Value)
       mergeDataTable.Cell(mergeDataTable.Rows.Count,
2).Range.InsertAfter (mergeData.DataFields(10).Value)
       mergeDataTable.Cell(mergeDataTable.Rows.Count,
3).Range.InsertAfter (mergeData.DataFields(11).Value)
       mergeDataTable.Cell(mergeDataTable.Rows.Count,
4).Range.InsertAfter (mergeData.DataFields(12).Value)

       ActDoc.MailMerge.DataSource.ActiveRecord = wdNextRecord

       If IsNumeric(ActDoc.MailMerge.DataSource.DataFields(8).Value)
Then
           nextEventId =
CInt(ActDoc.MailMerge.DataSource.DataFields(8).Value)
       Else
           Exit Sub
       End If
   Wend

   CancelMerge = False

End Sub

Private Sub MailMergeApp_MailMergeBeforeRecordMerge(ByVal Doc As
Document, Cancel As Boolean)

   If CancelMerge Then
       Cancel = True
   End If

End Sub

_Randal
Pam in California - 21 Apr 2005 00:25 GMT
Thanks.  I'll give this try.

> I am creating a confirmation document and would like to have attendees from
> the same company listed in the body of the confirmation without having to use
[quoted text clipped - 6 lines]
> Thanks for any help or direction you can give me.
> -pam
Peter Jamieson - 21 Apr 2005 08:09 GMT
Word isn't designed to do this. In consequence, however you do it, it can be
hard to get it right.

Some approaches are described at

http://homepage.swissonline.ch/cindymeister/

Look for Mail Merge FAQ, Special Merges, Multiple items per condition.

Peter Jamieson

>I am creating a confirmation document and would like to have attendees from
> the same company listed in the body of the confirmation without having to
[quoted text clipped - 10 lines]
> Thanks for any help or direction you can give me.
> -pam
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.