how to map mailmerge fields?

B

b.schmidt

hi,

I added a csv-file as DataSource to a Word Document (I'm using VSTO, C#
and Word 2007), which worked fine. Now I was wondering, how I can map
the columns I declared in the first line of the csv-file to the fields
Word uses for mailmerge?

I tried to use MappedDataFields, but whenever I tried to write to a
MappedDataField.DataFieldName it tells me that this property is read-only?

I'm a bit confused...

best regards,
Bernhard
 
P

Peter Jamieson

the columns I declared in the first line of the csv-file to the fields
Word uses for mailmerge?

You only need to map fields if you are using merge fields that rely on
mapping, such as ADDRESSBLOCK and GREETINGLINE, or if you want to use
mapping and use the standardlist of "Address Field" names with the "\m"
switch in the MERGEFIELD fields.

Not sure about Word 2007 but in Word 2003 you can't assign to the name. You
can work around this by assigning one index to another, e.g. to assign the
Address field "City" to the first column in the data source in VBA, you
might use:

Dim objMDFs As MappedDataFields
Set objMDFs = ActiveDocument.MailMerge.DataSource.MappedDataFields
objMDFs(wdCity).DataFieldIndex = 1
Set objMDFs = Nothing

i.e. if you want to assign the data source fied called "Town" to the mapped
field "City", you will probably need to iterate through the
ActiveDocument.MailMerge.DataSource.DataFields collection looking for the
field whos ename is "Town", and use its index value to set the
MappedDataFields.DataFieldIndex.

Peter Jamieson
 
P

Peter Jamieson

Strange though that the MappedDataField.DataFieldName is stated as
"Read/write" on MSDN, although Visual Studio says it's read-only...

Let me put it this way: I always try to avoid basing any statement on the
evidence of the official documentation alone, whatever its origin. When I
have, I've almost invariably regretted it. And that hasn't changed for over
25 years...

Peter Jamieson
 

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