MergeField with Words

Hello,
I have several hundreds of word documents in which I have to replace some words by the corresponding mergefield.
Doing it by hand will take me too much time as you guess.
Is there a way to replace a word with a mergefield ?

Regards

Hi
Thank you for your interest in Aspose.Words. Yes of course you can replace text with mergefield using Aspose.Words. I think you should use ReplaceEvaluator to achieve this. Please see the following link for more information.
https://reference.aspose.com/words/net/aspose.words/range/replace/
Also see the following code example:

public void Test003()
{
    // Open document
    Document doc = new Document(@"Test003\in.doc");
    // Replace word with mergefield using ReplaceEvaluator
    Regex regex = new Regex("word");
    doc.Range.Replace(regex, new ReplaceEvaluator(ReplaceInsertMergeField), false);
    // Save output document
    doc.Save(@"Test003\out.doc");
}
private ReplaceAction ReplaceInsertMergeField(object sender, ReplaceEvaluatorArgs e)
{
    // Get MatchNode
    Run run1 = (Run)e.MatchNode;
    // Create Run
    Run run2 = (Run)run1.Clone(true);
    // Get index of match value
    int index = run1.Text.IndexOf(e.Match.Value);
    // split run that contains matched text 
    run2.Text = run1.Text.Substring(index + e.Match.Value.Length);
    run1.Text = run1.Text.Substring(0, index);
    run1.ParentParagraph.InsertAfter(run2, run1);
    // Create document builder
    DocumentBuilder builder = new DocumentBuilder(e.MatchNode.Document);
    // Move to run2
    builder.MoveTo(run2);
    // Insert mergefield
    builder.InsertField(@"MERGEFIELD myField \* MERGEFORMAT", "«myField»");
    return ReplaceAction.Skip;
}

Hope this helps.
Best regards.

Many many thanks, you save my life :slight_smile:
Regards
Artyprog