.

Programmatically Accessing Mail Merge Fields in MS Word Documents

October 3, 2008 21:33 by Jorge

I have been working on a mail merge application that will allow for sending messages from a desktop computer by connecting directly to an SMTP server and not using the installed email client.

Based on this application’s code, this simple C# example shows how to programmatically replace a mail merge field in a Microsoft Word document with a desired value.



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);
    
}

I hope you find this sample helpful.

Actions: E-mail | Permalink | Comments (0) | Trackback

Related posts


Add comment


  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview



November 21, 2008 15:57