Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Mailmerge and Fax / May 2005

Tip: Looking for answers? Try searching our database.

How to reference a field's te once if duplicated in successive rec

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Frustrated - 09 May 2005 18:14 GMT
Hi,

I'd like to use the field "country" as a title for a list of organizations
from that specific country, and have it update the title only when a new
country is encountered.  I'm using a catalog merge, but cannot figure out how
to get the country, such as "USA" to print only once over the list of
organizations, and then print a new country title when encountered during the
merge.

I've tried using a bookmark reference and the "if - then -else" field, but
have not figured out a solution.

Can somebody help?

Thanks in advance...
Doug Robbins - 10 May 2005 09:10 GMT
This macro run on the catalog may 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

Signature

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

> Hi,
>
[quoted text clipped - 13 lines]
>
> Thanks in advance...
Frustrated - 10 May 2005 14:52 GMT
Wow...thanks!  I will try this out and get back to the listserv

> This macro run on the catalog may do what you want:
>
[quoted text clipped - 58 lines]
> >
> > Thanks in advance...
Frustrated - 10 May 2005 18:11 GMT
Hi Doug,

I tried the macro, but there was a "compilation error" at the "set ttab = "
line.  Couldn't figure out what to do from there!

Thanks again,

"Frustrated"

> Wow...thanks!  I will try this out and get back to the listserv
>
[quoted text clipped - 60 lines]
> > >
> > > Thanks in advance...
Doug Robbins - 10 May 2005 21:55 GMT
The following needs to all on one line

Set ttab = target.Tables.Add(Range:=Selection.Range, numrows:=1,
numcolumns:=k - 1)

The email program inserts line breaks that you will need to remove in the
visual basic editor

Signature

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

> Hi Doug,
>
[quoted text clipped - 77 lines]
>> > >
>> > > Thanks in advance...
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.