Home |
Search |
Today's Posts |
|
#1
![]() |
|||
|
|||
![]()
Hello,
I am creating an end-of-year mailing to this year's donors for my nonprofit group. The purpose of the mailing is to confirm their total giving for their tax records. I would like each donor to receive one letter, with the letter listing the date, amount, pupose, etc. of their donation(s). Here's my quandry: my data source is an excel file where each row is a separate donation. Some donors have given multiple times over the year, I want their letter to list all their donations (I could just send them a separate letter for each donation, but that would be inefficient and not as cool). So, how do I set up the merge so that each donor gets only one letter, and each letter lists all of that particular donor's contributions? Thanks in advance for your assistance. -- Joe |
#2
![]() |
|||
|
|||
![]()
Word does not really have the ability to perform a "multiple items per
condition (=key field)" mailmerge. See the "Multiple items per condition" item under the "Special merges" section of fellow MVP Cindy Meister's website at http://homepage.swissonline.ch/cindy...r/MergFram.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 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 -- Please respond to the Newsgroup for the benefit of others who may be interested. Questions sent directly to me will only be answered on a paid consulting basis. Hope this helps, Doug Robbins - Word MVP "jdb" wrote in message ... Hello, I am creating an end-of-year mailing to this year's donors for my nonprofit group. The purpose of the mailing is to confirm their total giving for their tax records. I would like each donor to receive one letter, with the letter listing the date, amount, pupose, etc. of their donation(s). Here's my quandry: my data source is an excel file where each row is a separate donation. Some donors have given multiple times over the year, I want their letter to list all their donations (I could just send them a separate letter for each donation, but that would be inefficient and not as cool). So, how do I set up the merge so that each donor gets only one letter, and each letter lists all of that particular donor's contributions? Thanks in advance for your assistance. -- Joe |
#3
![]() |
|||
|
|||
![]()
Thanks for your response, Doug. I tried your solution, but got a syntax
error in the macro: Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1, I know nothing about writing macros, so would appreciate any further help. "Doug Robbins" wrote: Word does not really have the ability to perform a "multiple items per condition (=key field)" mailmerge. See the "Multiple items per condition" item under the "Special merges" section of fellow MVP Cindy Meister's website at http://homepage.swissonline.ch/cindy...r/MergFram.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 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 -- Please respond to the Newsgroup for the benefit of others who may be interested. Questions sent directly to me will only be answered on a paid consulting basis. Hope this helps, Doug Robbins - Word MVP "jdb" wrote in message ... Hello, I am creating an end-of-year mailing to this year's donors for my nonprofit group. The purpose of the mailing is to confirm their total giving for their tax records. I would like each donor to receive one letter, with the letter listing the date, amount, pupose, etc. of their donation(s). Here's my quandry: my data source is an excel file where each row is a separate donation. Some donors have given multiple times over the year, I want their letter to list all their donations (I could just send them a separate letter for each donation, but that would be inefficient and not as cool). So, how do I set up the merge so that each donor gets only one letter, and each letter lists all of that particular donor's contributions? Thanks in advance for your assistance. -- Joe |
#4
![]() |
|||
|
|||
![]()
The mail program has inserted a line break in that row. Place the cursor at
the beginning of the next line of code and press the backspace key to rejoin the lines and restore it as all one command. -- Please respond to the Newsgroup for the benefit of others who may be interested. Questions sent directly to me will only be answered on a paid consulting basis. Hope this helps, Doug Robbins - Word MVP "jdb" wrote in message ... Thanks for your response, Doug. I tried your solution, but got a syntax error in the macro: Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1, I know nothing about writing macros, so would appreciate any further help. "Doug Robbins" wrote: Word does not really have the ability to perform a "multiple items per condition (=key field)" mailmerge. See the "Multiple items per condition" item under the "Special merges" section of fellow MVP Cindy Meister's website at http://homepage.swissonline.ch/cindy...r/MergFram.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 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 -- Please respond to the Newsgroup for the benefit of others who may be interested. Questions sent directly to me will only be answered on a paid consulting basis. Hope this helps, Doug Robbins - Word MVP "jdb" wrote in message ... Hello, I am creating an end-of-year mailing to this year's donors for my nonprofit group. The purpose of the mailing is to confirm their total giving for their tax records. I would like each donor to receive one letter, with the letter listing the date, amount, pupose, etc. of their donation(s). Here's my quandry: my data source is an excel file where each row is a separate donation. Some donors have given multiple times over the year, I want their letter to list all their donations (I could just send them a separate letter for each donation, but that would be inefficient and not as cool). So, how do I set up the merge so that each donor gets only one letter, and each letter lists all of that particular donor's contributions? Thanks in advance for your assistance. -- Joe |
Reply |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How do I merge an excel document | Tables | |||
Merge data into one document from several tables in Access. | Mailmerge | |||
How do I mail merge when only merge document is shown in tools? | Microsoft Word Help | |||
Endnote references in a document and in multiple appendices | Microsoft Word Help | |||
Need multiple Ifs in Merge Fields | Mailmerge |