Re: Group multiple items for a single condition - in a table?
- From: "Doug Robbins - Word MVP" <dkr@xxxxxxxxxxxxxxxxxx>
- Date: Fri, 12 Jan 2007 19:24:01 +0100
Word does not really have the ability to do that out of the box:
See the "Group Multiple items for a single condition" item on fellow MVP
Cindy Meister's website at
http://homepage.swissonline.ch/cindymeister/mergfaq1.htm#DBPic
Or take a look at the following Knowledge Base Article
http://support.microsoft.com/default.aspx?scid=kb;en-us;211303
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
--
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
"Beth Obenshain" <BethObenshain@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:25CE9A88-8FE5-42F4-993B-F01FAE3C0ACD@xxxxxxxxxxxxxxxx
In my excel data source, each record represents a program. Each program
has a
*different number* of variables. Each variable has a name, description,
and
default value. I would like to present the information on variables in a
table with three columns (name, description, and default value).
Can this be done? Is there a way to create table rows in a merge?
I am using the following Knowledge Base article:
http://support.microsoft.com/kb/294686/en-us
Thanks.
.
- Prev by Date: Re: insert the relevant bitmap picture of a persons signature
- Next by Date: print next record on same page untill, cell=FALSE then start new page.
- Previous by thread: insert the relevant bitmap picture of a persons signature
- Next by thread: print next record on same page untill, cell=FALSE then start new page.
- Index(es):
Relevant Pages
|