Reply
 
Thread Tools Display Modes
  #1   Report Post  
Posted to microsoft.public.word.mailmerge.fields
 
Posts: n/a
Default Directory mail merge questions

I am having trouble doing exactly what I want to do with a directory
mail merge. I have a very long list of students, by school. First, I
would like to do a page break when the school changes. As soon as I
put any { } type stuff in, the directory stops being a directory, and
becomes a regular mail merge with one merged record per page. Is this
normal? (using word 2003)

Is the only way to do this with a macro or something after the merging
has occurred?

Thanks in advance for any help!

-Chris

  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP
 
Posts: n/a
Default Directory mail merge questions

Sounds like you are probably trying to perform a "multiple items per
condition (=key field)" mailmerge which Word does not really have the
ability to do:

See the "Group Multiple items for a single condition" item on fellow MVP
Cindy Meister's website at

http://homepage.swissonline.ch/cindy...faq1.htm#DBPic


Or take a look at the following Knowledge Base Article

http://support.microsoft.com/default...b;en-us;211303


http://www.knowhow.com/Guides/Compou...poundMerge.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 (School in your case) in them.

' 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

wrote in message
oups.com...
I am having trouble doing exactly what I want to do with a directory
mail merge. I have a very long list of students, by school. First, I
would like to do a page break when the school changes. As soon as I
put any { } type stuff in, the directory stops being a directory, and
becomes a regular mail merge with one merged record per page. Is this
normal? (using word 2003)

Is the only way to do this with a macro or something after the merging
has occurred?

Thanks in advance for any help!

-Chris



  #3   Report Post  
Posted to microsoft.public.word.mailmerge.fields
 
Posts: n/a
Default Directory mail merge questions

Thanks so much! I saw this sort of response before, but I wasn't sure
it was really what I was trying to do.

I tried running the macro you provided, and it worked great, thanks!

I have to admit that looking at all the options to solve this problem
is a little daunting, especially when you're on a deadline to find a
fix.

Do you know if there are classes/seminars that teach the higher levels
of programming with Word?

Thanks!

Doug Robbins - Word MVP wrote:
Sounds like you are probably trying to perform a "multiple items per
condition (=key field)" mailmerge which Word does not really have the
ability to do:

See the "Group Multiple items for a single condition" item on fellow MVP
Cindy Meister's website at

http://homepage.swissonline.ch/cindy...faq1.htm#DBPic


Or take a look at the following Knowledge Base Article

http://support.microsoft.com/default...b;en-us;211303


http://www.knowhow.com/Guides/Compou...poundMerge.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 (School in your case) in them.

' 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

wrote in message
oups.com...
I am having trouble doing exactly what I want to do with a directory
mail merge. I have a very long list of students, by school. First, I
would like to do a page break when the school changes. As soon as I
put any { } type stuff in, the directory stops being a directory, and
becomes a regular mail merge with one merged record per page. Is this
normal? (using word 2003)

Is the only way to do this with a macro or something after the merging
has occurred?

Thanks in advance for any help!

-Chris


  #4   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP
 
Posts: n/a
Default Directory mail merge questions

As far as I am concerned, I cannot learn things (at least remember anything
worthwhile) unless I have a need/use for it.

There is really so much to know about programming Word that it's a bit the
same way.

But for starters, see the article "Getting To Grips With VBA Basics In 15
Minutes" at:

http://www.word.mvps.org/FAQs/Macros...csIn15Mins.htm

and take a look at the other articles on that website on which we do cover a
lot of needs. Also, make extensive use of the F1 (help) key in the Visual
Basic Editor.

And, if you get stuck, post questions to these newsgroups.

--
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

wrote in message
oups.com...
Thanks so much! I saw this sort of response before, but I wasn't sure
it was really what I was trying to do.

I tried running the macro you provided, and it worked great, thanks!

I have to admit that looking at all the options to solve this problem
is a little daunting, especially when you're on a deadline to find a
fix.

Do you know if there are classes/seminars that teach the higher levels
of programming with Word?

Thanks!

Doug Robbins - Word MVP wrote:
Sounds like you are probably trying to perform a "multiple items per
condition (=key field)" mailmerge which Word does not really have the
ability to do:

See the "Group Multiple items for a single condition" item on fellow MVP
Cindy Meister's website at

http://homepage.swissonline.ch/cindy...faq1.htm#DBPic


Or take a look at the following Knowledge Base Article

http://support.microsoft.com/default...b;en-us;211303


http://www.knowhow.com/Guides/Compou...poundMerge.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 (School in your case) in them.

' 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

wrote in message
oups.com...
I am having trouble doing exactly what I want to do with a directory
mail merge. I have a very long list of students, by school. First, I
would like to do a page break when the school changes. As soon as I
put any { } type stuff in, the directory stops being a directory, and
becomes a regular mail merge with one merged record per page. Is this
normal? (using word 2003)

Is the only way to do this with a macro or something after the merging
has occurred?

Thanks in advance for any help!

-Chris




Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
NO CODE - mail merge to Outlook with attachment with CC BrianH Mailmerge 1 February 10th 10 02:53 PM
How: 2-column WORD mail merge name/address directory? Bulldog Mailmerge 1 April 18th 06 08:30 AM
Directory mail merge skips entries Pearkuu Mailmerge 3 April 8th 06 07:39 PM
mail merge with word 2003 ken sunshine New Users 5 March 23rd 06 05:01 PM
Mail Merge Losing Data Scott May Mailmerge 1 November 1st 05 11:03 PM


All times are GMT +1. The time now is 04:22 AM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"