save merged document from c# without opening word

T

tom

Hi,

I would like to save a merged document to disk, without opening word.
The merging works fine if I make word visible and let the user save the doc,
but if I try to save from code without showing word, i get 'Opening this
document will run the following SQL command'.

The code I use is as follows :

object objNull = System.Reflection.Missing.Value;
string strDataSource = @"C:\HRAccent\MailMerge\dataEmpl.csv";
object strTemplatePath = @"C:\HRAccent\MailMerge\testTemplate.doc";
object objTrue = true;
object objFalse = false;
object objOpenFormat;

objOpenFormat = Microsoft.Office.Interop.Word.WdOpenFormat.wdOpenFormatAuto;

Microsoft.Office.Interop.Word.Application wrdApp = new
Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word._Document wrdDoc;
Microsoft.Office.Interop.Word.MailMerge wrdMailMerge;

wrdDoc = wrdApp.Documents.Open(ref strTemplatePath, ref objFalse, ref
objTrue, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref
objNull, ref objNull, ref objNull, ref objFalse, ref objNull, ref objNull,
ref objNull);

wrdApp.Visible = false;
wrdDoc.Activate();

wrdDoc.MailMerge.OpenDataSource(strDataSource, ref objNull, ref objFalse,
ref objTrue, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull,
ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull,
ref objNull);

wrdMailMerge = wrdDoc.MailMerge;

wrdMailMerge.Destination =
Microsoft.Office.Interop.Word.WdMailMergeDestination.wdSendToNewDocument;
wrdMailMerge.Execute(ref objFalse);

object wdFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatRTF;
Object fileName = @"C:\HRAccent\MailMerge\test.doc";

wrdDoc.SaveAs( ref fileName, ref objNull, ref objNull, ref objNull, ref
objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref
objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull);

wrdDoc.Saved = true;
wrdDoc.Close(ref objTrue,ref objNull,ref objNull);

wrdApp.Quit(ref objFalse,ref objNull,ref objNull);

wrdMailMerge = null;
wrdDoc = null;
wrdApp = null;


Anyone any ideas?

Thanx,
t
 
T

tom

Thanks Peter,

But the thing is, if I do display word and let the user save the document,
it is no longer a document with mergefields, so it doesn't need a link to the
datasource anymore.

I want to achieve the same effect by code, do the mailmerge, save the doc
without it having the need to have the datasource still.


Tom
 
P

Peter Jamieson

Hi Tom,

I had a look at your code again and the problem could be to do with the
Save, because you're using wrdDoc to do the save. When Word merges to a new
document, that document becomes the ActiveDocument and you have to reference
it that way.

See if that changes anything.

Peter Jamieson
 
T

Tatiana

Hi,

I have the same problem and wonderiing if it's possible to see the final, working code.

Thank you
 

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