Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Directory mail merge questions
I am having trouble doing exactly what I want to do with a directory
mail merge. I have a very long list of students, by school. First, I would like to do a page break when the school changes. As soon as I put any { } type stuff in, the directory stops being a directory, and becomes a regular mail merge with one merged record per page. Is this normal? (using word 2003) Is the only way to do this with a macro or something after the merging has occurred? Thanks in advance for any help! -Chris |
#2
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Directory mail merge questions
Sounds like you are probably 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://www.knowhow.com/Guides/Compou...poundMerge.htm 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 (School in your case) in them. ' 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 wrote in message oups.com... I am having trouble doing exactly what I want to do with a directory mail merge. I have a very long list of students, by school. First, I would like to do a page break when the school changes. As soon as I put any { } type stuff in, the directory stops being a directory, and becomes a regular mail merge with one merged record per page. Is this normal? (using word 2003) Is the only way to do this with a macro or something after the merging has occurred? Thanks in advance for any help! -Chris |
#3
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Directory mail merge questions
Thanks so much! I saw this sort of response before, but I wasn't sure
it was really what I was trying to do. I tried running the macro you provided, and it worked great, thanks! I have to admit that looking at all the options to solve this problem is a little daunting, especially when you're on a deadline to find a fix. Do you know if there are classes/seminars that teach the higher levels of programming with Word? Thanks! Doug Robbins - Word MVP wrote: Sounds like you are probably 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://www.knowhow.com/Guides/Compou...poundMerge.htm 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 (School in your case) in them. ' 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 wrote in message oups.com... I am having trouble doing exactly what I want to do with a directory mail merge. I have a very long list of students, by school. First, I would like to do a page break when the school changes. As soon as I put any { } type stuff in, the directory stops being a directory, and becomes a regular mail merge with one merged record per page. Is this normal? (using word 2003) Is the only way to do this with a macro or something after the merging has occurred? Thanks in advance for any help! -Chris |
#4
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Directory mail merge questions
As far as I am concerned, I cannot learn things (at least remember anything
worthwhile) unless I have a need/use for it. There is really so much to know about programming Word that it's a bit the same way. But for starters, see the article "Getting To Grips With VBA Basics In 15 Minutes" at: http://www.word.mvps.org/FAQs/Macros...csIn15Mins.htm and take a look at the other articles on that website on which we do cover a lot of needs. Also, make extensive use of the F1 (help) key in the Visual Basic Editor. And, if you get stuck, post questions to these newsgroups. -- 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 wrote in message oups.com... Thanks so much! I saw this sort of response before, but I wasn't sure it was really what I was trying to do. I tried running the macro you provided, and it worked great, thanks! I have to admit that looking at all the options to solve this problem is a little daunting, especially when you're on a deadline to find a fix. Do you know if there are classes/seminars that teach the higher levels of programming with Word? Thanks! Doug Robbins - Word MVP wrote: Sounds like you are probably 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://www.knowhow.com/Guides/Compou...poundMerge.htm 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 (School in your case) in them. ' 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 wrote in message oups.com... I am having trouble doing exactly what I want to do with a directory mail merge. I have a very long list of students, by school. First, I would like to do a page break when the school changes. As soon as I put any { } type stuff in, the directory stops being a directory, and becomes a regular mail merge with one merged record per page. Is this normal? (using word 2003) Is the only way to do this with a macro or something after the merging has occurred? Thanks in advance for any help! -Chris |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
NO CODE - mail merge to Outlook with attachment with CC | Mailmerge | |||
How: 2-column WORD mail merge name/address directory? | Mailmerge | |||
Directory mail merge skips entries | Mailmerge | |||
mail merge with word 2003 | New Users | |||
Mail Merge Losing Data | Mailmerge |