Excel to Word merge

J

Jo8379

I have an excel spreadsheet of data that I'm trying to merge into a word
document (a survey). I'd like all responses to Question 1 to be listed under
Question 1 in the word document. I have entered the merge field name for
Question one, two, etc. but I'm only getting the first survey results in the
output doc. How do I get the rest to appear?
 
M

macropod

Hi Jo8379,

See: http://support.microsoft.com/?kbid=211303
Note that the field code construction in that article results in an extra line being inserted between records when the data source
is an Excel workbook.

The following (simpler) field coding eliminates the unwanted extra lines from the first example:
{QUOTE{IF{MERGESEQ}= 1 {SET Place ""}}"{IF{MERGEFIELD City}<> {Place} "{IF{MERGESEQ}= 1 "" "<ENTER>
"}{MERGEFIELD City}{SET Place {MERGEFIELD City}}<ENTER>
<ENTER>
"}{MERGEFIELD Employee}<TAB>{MERGEFIELD Sales}<ENTER>
"}<ENTER>
Modify the MERGEFIELD field names to suit your data.
 
J

Jo8379

Thanks. I think it might be simpler than that. It's a survey summary. So I
have a word document survey and I have the questions listed (1-10). After
Question 1 in the survey form I'd like all responses to Question 1 to appear
in a list. Then it will have question 2. Under that question I want to see
all responses to question 2 listed.

By the way - I'm using 2003.


macropod said:
Hi Jo8379,

See: http://support.microsoft.com/?kbid=211303
Note that the field code construction in that article results in an extra line being inserted between records when the data source
is an Excel workbook.

The following (simpler) field coding eliminates the unwanted extra lines from the first example:
{QUOTE{IF{MERGESEQ}= 1 {SET Place ""}}"{IF{MERGEFIELD City}<> {Place} "{IF{MERGESEQ}= 1 "" "<ENTER>
"}{MERGEFIELD City}{SET Place {MERGEFIELD City}}<ENTER>
<ENTER>
"}{MERGEFIELD Employee}<TAB>{MERGEFIELD Sales}<ENTER>
"}<ENTER>
Modify the MERGEFIELD field names to suit your data.

--
Cheers
macropod
[MVP - Microsoft Word]


Jo8379 said:
I have an excel spreadsheet of data that I'm trying to merge into a word
document (a survey). I'd like all responses to Question 1 to be listed under
Question 1 in the word document. I have entered the merge field name for
Question one, two, etc. but I'm only getting the first survey results in the
output doc. How do I get the rest to appear?
 
D

Doug Robbins - Word MVP

You might think that it could be simpler, but what you are wanting to do is
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/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 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

Jo8379 said:
Thanks. I think it might be simpler than that. It's a survey summary.
So I
have a word document survey and I have the questions listed (1-10). After
Question 1 in the survey form I'd like all responses to Question 1 to
appear
in a list. Then it will have question 2. Under that question I want to
see
all responses to question 2 listed.

By the way - I'm using 2003.


macropod said:
Hi Jo8379,

See: http://support.microsoft.com/?kbid=211303
Note that the field code construction in that article results in an extra
line being inserted between records when the data source
is an Excel workbook.

The following (simpler) field coding eliminates the unwanted extra lines
from the first example:
{QUOTE{IF{MERGESEQ}= 1 {SET Place ""}}"{IF{MERGEFIELD City}<> {Place}
"{IF{MERGESEQ}= 1 "" "<ENTER>
"}{MERGEFIELD City}{SET Place {MERGEFIELD City}}<ENTER>
<ENTER>
"}{MERGEFIELD Employee}<TAB>{MERGEFIELD Sales}<ENTER>
"}<ENTER>
Modify the MERGEFIELD field names to suit your data.

--
Cheers
macropod
[MVP - Microsoft Word]


Jo8379 said:
I have an excel spreadsheet of data that I'm trying to merge into a
word
document (a survey). I'd like all responses to Question 1 to be listed
under
Question 1 in the word document. I have entered the merge field name
for
Question one, two, etc. but I'm only getting the first survey results
in the
output doc. How do I get the rest to appear?
 

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