Creating a repeating section

B

Beth Durn

Hello,

Does anyone know if this is possible

I have got a mail merge source in a delimited file.

The fields are name, address, transaction date,
transaction amount.

For each transaction there is one row.

Each customer may have more than one transaction so the
name & address details will be repeated several times.

I want to create a statement for the customer with their
name & address at the top, and then the transactions
listed in a table. I need a way to do some kind of
repeating section.

Thanks for you help,
Beth
 
D

Doug Robbins

I imagine that as you have a comma delimited file, it may have come out of
some database application in which case, that is probably the best place to
do this.

It's not something that Word has any in-built capability to do, but you can
take a look at the "Multiple items per condition" item under the "Special
merges" section of fellow MVP CIndy Meister's website at
http://homepage.swissonline.ch/cindymeister/MergFram.htm

Or, if you create a catalog type mailmerge with a table in it in which you
have the name and address details in the first column with the transaction
date and details in other columns and you execute that merge and then run
the following macro over the resulting document, it will create a separate
table for each name and address with that information in the first row of
the table and the transaction details for that name in the following rows:

' Macro created by Doug Robbins 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top