using Word = Microsoft.Office.Interop.Word;
...
public static void ReplaceMailMergeField(string msWordFileName,
string mailMergeFieldName, string mailMergeFieldDesiredValue)
{
object docName = msWordFileName;
object missing = Missing.Value;
Word.MailMerge mailMerge;
Word._Document doc;
Word.Application app = new Word.Application();
// Hide MS Word's window.
app.Visible = false;
doc = app.Documents.Open(ref docName,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
mailMerge = doc.MailMerge;
// Try to find the field name.
foreach (Word.MailMergeField f in mailMerge.Fields)
{
// Assuming the field code is: MERGEFIELD "mailMergeFieldName"
if (f.Code.Text.IndexOf("MERGEFIELD \"" + mailMergeFieldName +"\"") > -1)
{
f.Select();
// Replace selected field with supplied value.
app.Selection.TypeText(mailMergeFieldDesiredValue);
}
}
// Save changes and close MS Word.
object saveChanges = Word.WdSaveOptions.wdSaveChanges;
doc.Close(ref saveChanges, ref missing, ref missing);
app.Quit(ref missing, ref missing, ref missing);
}