Home |
Search |
Today's Posts |
|
#1
Posted to microsoft.public.word.mailmerge.fields
|
|||
|
|||
Arbitrary number of rows in a table
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 or at: http://cornell.veplan.net/article.aspx?&a=3815 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 "Kev" wrote in message ps.com... Hi all, I am sure I am not the first person wanting to do this so I hope someone can help me. I will use a fictional example of what I would like to do to illustrate the problem, although this sample bears no resemblance to the real data. I have a merge file with 3 fields name, address and products. "products" could either be a delimiter seperated list or a simple space seperated. For example, the record could be "Kevin","My house","computer monitor scanner printer" or "Kevin","My house","computer;monitor;scanner;printer" When I perform the merge, I would like the four products on a seperate line in the document. I do not want a seperate field for each product as the number of products is arbitrary. Is it possible to do this easily in Word. Or would a more complicated merge file format be required, with some kind of ID e.g. "1","Kevin","My house" "1","computer" "1","monitor" "1","scanner" "1","printer" "2","John","His house" "2","bike" "2","car" etc in other words, each single mail merge spans multiple lines in the file. If anyone has any experience of this scenario I would be grateful for your comments. Thanks in anticipation |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
how can I count the number of rows in an existing table | Tables | |||
How do I automatically number the rows in a Word 2003 table? | Tables | |||
how to determine the number of rows in a large Word table? | Microsoft Word Help | |||
Count number of rows in table | Microsoft Word Help | |||
Limiting number of table rows per page | Tables |