Catalog Mail Merge - Conditionally Insert Page Break

S

Someguy51

Hi,

I'm doing a catalog/directory mail merge. I want to conditionally insert a
page break. I was able to do it by having

{ IF {MERGEFIELD nextpagen} > 0, "New Page"}

However the issue is that the data inside my catalog merge is inside a
table. The "IF" code is at the top of the page and the table with the merge
fields starts right below it. The final merge has the data on the right
pages but the has a seperate table for each row. Is there a way I can insert
the page break and have the rows inside one table?

Thank You
 
D

Doug Robbins - Word MVP

If you add another column as the first column of the table in your mailmerge
main document and insert the nextpagen field into that cell, and possibly
modify what you now have in the nextpagen field, then execute the merge to a
new document and run the following macro over that document, it will create
a document in which a table is started on a new page every time the data in
the nextpagen field changes

' 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
 

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