Home |
Search |
Today's Posts |
#1
|
|||
|
|||
Mail merge by group
I have a mail merge I'm working on that appears to be a bit of a challenge.
A contract number can have more than one contract type. If I try to merge the data below I get 7 documents (000022222, 000022222, 000022222, 000022222, 000022223, 000022223 000022225) when in fact there are only three unique documents (000022222, 000022223, 000022225) How do I place all of the information of a particular contract in its own document? FYI: I cannot use Access because our company does not have it. Contract No. Contract Title Contract Type Author 000022222 Title1 international Smith 000022222 Title1 domestic Smith 000022222 Title1 NAFTA Smith 000022222 Title1 Asia Smith 000022223 Title1 US Jeffrey 000022223 Title1 Asia Jeffrey 000022225 Title1 domestic Jones Any suggestions? Please explain slowly as am not experienced in vba. Thanks P |
#2
|
|||
|
|||
Mail merge by group
Word does not really have the ability to perform a "multiple items per
condition (=key field)" mailmerge. 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 How to Work Around Duplicate Names in Mail Merge Data http://support.microsoft.com/default...b;en-us;302665 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 "Parisa" wrote in message ... I have a mail merge I'm working on that appears to be a bit of a challenge. A contract number can have more than one contract type. If I try to merge the data below I get 7 documents (000022222, 000022222, 000022222, 000022222, 000022223, 000022223 000022225) when in fact there are only three unique documents (000022222, 000022223, 000022225) How do I place all of the information of a particular contract in its own document? FYI: I cannot use Access because our company does not have it. Contract No. Contract Title Contract Type Author 000022222 Title1 international Smith 000022222 Title1 domestic Smith 000022222 Title1 NAFTA Smith 000022222 Title1 Asia Smith 000022223 Title1 US Jeffrey 000022223 Title1 Asia Jeffrey 000022225 Title1 domestic Jones Any suggestions? Please explain slowly as am not experienced in vba. Thanks P |
#3
|
|||
|
|||
Mail merge by group
"Doug Robbins - Word MVP" wrote: Word does not really have the ability to perform a "multiple items per condition (=key field)" mailmerge. 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 How to Work Around Duplicate Names in Mail Merge Data http://support.microsoft.com/default...b;en-us;302665 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 "Parisa" wrote in message ... I have a mail merge I'm working on that appears to be a bit of a challenge. A contract number can have more than one contract type. If I try to merge the data below I get 7 documents (000022222, 000022222, 000022222, 000022222, 000022223, 000022223 000022225) when in fact there are only three unique documents (000022222, 000022223, 000022225) How do I place all of the information of a particular contract in its own document? FYI: I cannot use Access because our company does not have it. Contract No. Contract Title Contract Type Author 000022222 Title1 international Smith 000022222 Title1 domestic Smith 000022222 Title1 NAFTA Smith 000022222 Title1 Asia Smith 000022223 Title1 US Jeffrey 000022223 Title1 Asia Jeffrey 000022225 Title1 domestic Jones Any suggestions? Please explain slowly as am not experienced in vba. Thanks P I'll try your suggestions. However your third suggestions seems to be out of my league but I'll try. Thanks |
#4
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Mail merge by group
The Macro solution works near-perfectly. There was a syntax error in the
macro, but I just guessed about what it might be and, sure enough, it works. Thanks. I do have one question - after I run the macro, all the formatting is lost - page layout, font, bold, etc. Is there a way to rpeserve the formatting information while running it? Thanks again. -- Joe "Doug Robbins - Word MVP" wrote: Word does not really have the ability to perform a "multiple items per condition (=key field)" mailmerge. 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 How to Work Around Duplicate Names in Mail Merge Data http://support.microsoft.com/default...b;en-us;302665 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 "Parisa" wrote in message ... I have a mail merge I'm working on that appears to be a bit of a challenge. A contract number can have more than one contract type. If I try to merge the data below I get 7 documents (000022222, 000022222, 000022222, 000022222, 000022223, 000022223 000022225) when in fact there are only three unique documents (000022222, 000022223, 000022225) How do I place all of the information of a particular contract in its own document? FYI: I cannot use Access because our company does not have it. Contract No. Contract Title Contract Type Author 000022222 Title1 international Smith 000022222 Title1 domestic Smith 000022222 Title1 NAFTA Smith 000022222 Title1 Asia Smith 000022223 Title1 US Jeffrey 000022223 Title1 Asia Jeffrey 000022225 Title1 domestic Jones Any suggestions? Please explain slowly as am not experienced in vba. Thanks P |
#5
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Mail merge by group
Not sure to which macro you are refering here.
-- 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 "jdb" wrote in message ... The Macro solution works near-perfectly. There was a syntax error in the macro, but I just guessed about what it might be and, sure enough, it works. Thanks. I do have one question - after I run the macro, all the formatting is lost - page layout, font, bold, etc. Is there a way to rpeserve the formatting information while running it? Thanks again. -- Joe "Doug Robbins - Word MVP" wrote: Word does not really have the ability to perform a "multiple items per condition (=key field)" mailmerge. 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 How to Work Around Duplicate Names in Mail Merge Data http://support.microsoft.com/default...b;en-us;302665 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 "Parisa" wrote in message ... I have a mail merge I'm working on that appears to be a bit of a challenge. A contract number can have more than one contract type. If I try to merge the data below I get 7 documents (000022222, 000022222, 000022222, 000022222, 000022223, 000022223 000022225) when in fact there are only three unique documents (000022222, 000022223, 000022225) How do I place all of the information of a particular contract in its own document? FYI: I cannot use Access because our company does not have it. Contract No. Contract Title Contract Type Author 000022222 Title1 international Smith 000022222 Title1 domestic Smith 000022222 Title1 NAFTA Smith 000022222 Title1 Asia Smith 000022223 Title1 US Jeffrey 000022223 Title1 Asia Jeffrey 000022225 Title1 domestic Jones Any suggestions? Please explain slowly as am not experienced in vba. Thanks P |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Mail Merge Word 2003 Issue | Mailmerge | |||
Mail Merge - Parameter prompts twice... | Mailmerge | |||
mail merge with attachments | Mailmerge | |||
Mail Merge Issue With Office 97 - Excel Data Source | Mailmerge | |||
Word-Excel 2003 - Mail Merge Recipients problem | Mailmerge |