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

后端 未结 3 1836
忘掉有多难
忘掉有多难 2021-01-23 07:42

I use something like this:

doc.Content.Find.Font.Name = \"Times New Roman\";

but when I step through the code the Name property doesn\'t change

相关标签:
3条回答
  • 2021-01-23 08:01

    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
    
    0 讨论(0)
  • 2021-01-23 08:06

    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
        }
    }
    
    0 讨论(0)
  • 2021-01-23 08:14

    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);
    
    0 讨论(0)
提交回复
热议问题