How to search for a specific font in a Word document with iterop

♀尐吖头ヾ 提交于 2019-12-02 02:53:57

Thanks for your reply, but no you don't get a new Find object each time you use dot notation. The problem is you shouldn't use Doc.Content.Find in this kind of situation. Instead you have to create a new Range object and use its Find. Something like this:

Word.Range range = doc.Range(0, doc.Content.End);

I believe you need to obtain a FIND object and then use it, when you refer to the object via dot notation like you have, you're always getting a brand new FIND object, so you'll loose your settings each time.

Something like this

With Doc.content.Find
    .clearFormatting
    .Font.name = "blah"
    .Execute .....
End With

I used this:

Microsoft.Office.Interop.Word._Application word;
Microsoft.Office.Interop.Word._Document doc;

bool found_next = false;
private void search_Replace1()
{
    word = Globals.ThisAddIn.Application;
    doc = word.ActiveDocument;
    word.Selection.Find.Font.Name = "My Font";
    found_next= word.Selection.Find.Execute(Format: true);
    if (found_next)
    {
        word.Selection.Font.Name = "Arial"; 
        //word.Selection.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdRed;  //change color to red
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!