View Single Post
  #4   Report Post  
Doug Robbins
 
Posts: n/a
Default

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