Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
![]()
I am trying to create an employee phone list using mail merge and the
directory tool. My list is an Excel database. The column headings are "extension number", "first name", "last name", "department", and "Heading" in that order starting in column A. I would like to have the heading listed first ( the heading contains unique info like mailing address and government program), then the department (within the government program), the first name, the last name and then the employee's extension. I can get all to list easy enough but all five items show for each and every extension number which makes for a long list. I would like to have the "heading" and "department" listed only once then have all the employee's numbers for that department listed. Then when there is a new department the "heading" and "department" would list again one time. How can I do this? |
#2
![]()
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
![]()
You are trying to perform a "multiple items per condition (=key field)"
mailmerge which Word does not really have the ability to do: See the "Group Multiple items for a single condition" item on fellow MVP Cindy Meister's website at http://homepage.swissonline.ch/cindy...faq1.htm#DBPic Or take a look at the following Knowledge Base Article http://support.microsoft.com/default...b;en-us;211303 http://cornell.veplan.net/article.aspx?&a=3815 Or, if you create a Catalog (on in Word XP and later, it's called Directory) type mailmerge main document with the mergefields in the cells of a one row table in the mailmerge main document with the keyfield in the first cell in the row and then execute that merge to a new document and then run the following macro, it will create separate tables with the records for each key field in them. With a bit of further development, you may be able to get it to do what you want. ' Macro to create multiple items per condition in separate tables from a directory type mailmerge Dim source As Document, target As Document, scat As Range, tcat As Range Dim data As Range, stab As Table, ttab As Table Dim i As Long, j As Long, k As Long, n As Long Set source = ActiveDocument Set target = Documents.Add Set stab = source.Tables(1) k = stab.Columns.Count Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1, numcolumns:=k - 1) Set scat = stab.Cell(1, 1).Range scat.End = scat.End - 1 ttab.Cell(1, 1).Range = scat j = ttab.Rows.Count For i = 1 To stab.Rows.Count Set tcat = ttab.Cell(j, 1).Range tcat.End = tcat.End - 1 Set scat = stab.Cell(i, 1).Range scat.End = scat.End - 1 If scat tcat Then ttab.Rows.Add j = ttab.Rows.Count ttab.Cell(j, 1).Range = scat ttab.Cell(j, 1).Range.Paragraphs(1).PageBreakBefore = True ttab.Rows.Add ttab.Cell(j + 1, 1).Range.Paragraphs(1).PageBreakBefore = False For n = 2 To k Set data = stab.Cell(i, n).Range data.End = data.End - 1 ttab.Cell(ttab.Rows.Count, n - 1).Range = data Next n Else ttab.Rows.Add For n = 2 To k Set data = stab.Cell(i, n).Range data.End = data.End - 1 ttab.Cell(ttab.Rows.Count, n - 1).Range = data Next n End If Next i -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP "OfficeNDN" wrote in message ... I am trying to create an employee phone list using mail merge and the directory tool. My list is an Excel database. The column headings are "extension number", "first name", "last name", "department", and "Heading" in that order starting in column A. I would like to have the heading listed first ( the heading contains unique info like mailing address and government program), then the department (within the government program), the first name, the last name and then the employee's extension. I can get all to list easy enough but all five items show for each and every extension number which makes for a long list. I would like to have the "heading" and "department" listed only once then have all the employee's numbers for that department listed. Then when there is a new department the "heading" and "department" would list again one time. How can I do this? |
#3
![]()
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
![]()
Thanks Doug Robbins I will give this a try.
"Doug Robbins - Word MVP" wrote: You are trying to perform a "multiple items per condition (=key field)" mailmerge which Word does not really have the ability to do: See the "Group Multiple items for a single condition" item on fellow MVP Cindy Meister's website at http://homepage.swissonline.ch/cindy...faq1.htm#DBPic Or take a look at the following Knowledge Base Article http://support.microsoft.com/default...b;en-us;211303 http://cornell.veplan.net/article.aspx?&a=3815 Or, if you create a Catalog (on in Word XP and later, it's called Directory) type mailmerge main document with the mergefields in the cells of a one row table in the mailmerge main document with the keyfield in the first cell in the row and then execute that merge to a new document and then run the following macro, it will create separate tables with the records for each key field in them. With a bit of further development, you may be able to get it to do what you want. ' Macro to create multiple items per condition in separate tables from a directory type mailmerge Dim source As Document, target As Document, scat As Range, tcat As Range Dim data As Range, stab As Table, ttab As Table Dim i As Long, j As Long, k As Long, n As Long Set source = ActiveDocument Set target = Documents.Add Set stab = source.Tables(1) k = stab.Columns.Count Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1, numcolumns:=k - 1) Set scat = stab.Cell(1, 1).Range scat.End = scat.End - 1 ttab.Cell(1, 1).Range = scat j = ttab.Rows.Count For i = 1 To stab.Rows.Count Set tcat = ttab.Cell(j, 1).Range tcat.End = tcat.End - 1 Set scat = stab.Cell(i, 1).Range scat.End = scat.End - 1 If scat tcat Then ttab.Rows.Add j = ttab.Rows.Count ttab.Cell(j, 1).Range = scat ttab.Cell(j, 1).Range.Paragraphs(1).PageBreakBefore = True ttab.Rows.Add ttab.Cell(j + 1, 1).Range.Paragraphs(1).PageBreakBefore = False For n = 2 To k Set data = stab.Cell(i, n).Range data.End = data.End - 1 ttab.Cell(ttab.Rows.Count, n - 1).Range = data Next n Else ttab.Rows.Add For n = 2 To k Set data = stab.Cell(i, n).Range data.End = data.End - 1 ttab.Cell(ttab.Rows.Count, n - 1).Range = data Next n End If Next i -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP "OfficeNDN" wrote in message ... I am trying to create an employee phone list using mail merge and the directory tool. My list is an Excel database. The column headings are "extension number", "first name", "last name", "department", and "Heading" in that order starting in column A. I would like to have the heading listed first ( the heading contains unique info like mailing address and government program), then the department (within the government program), the first name, the last name and then the employee's extension. I can get all to list easy enough but all five items show for each and every extension number which makes for a long list. I would like to have the "heading" and "department" listed only once then have all the employee's numbers for that department listed. Then when there is a new department the "heading" and "department" would list again one time. How can I do this? |
Reply |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
phone directory: how repeat data fields per table cell per record | Page Layout | |||
phone directory with addresses and phone number from existing fi. | Mailmerge | |||
How can I avoid only getting a 0 when mailmerge an itn'l phone nu. | Mailmerge | |||
How do I set up a address,phone and email list? | Microsoft Word Help | |||
print phone directory with notes from outlook into word using mail | Mailmerge |