Как искать определенный шрифт в документе Word с помощью iterop - PullRequest
1 голос
/ 09 декабря 2010

Я использую что-то вроде этого:

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

, но когда я выполняю код, свойство Name не изменяется. Благодарю.


Я работаю с VS2010 и MS Word 2007 и хочу найти и заменить все шрифты «Times New Roman» на «Arial».

Вот что происходит:

Word.Application wordApp = new Word.Application();
Word.Documents docs = wordApp.Documents;
doc = docs.Open(fileName, Visible: false);
doc.Content.Find.ClearFormatting();
doc.Content.Find.Replacement.ClearFormatting();

// Here the value of Find.Font.Name and Replacement.Font.Name is ""

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

// The value of Find.Font.Name and Replacement.Font.Name still "" !!!

doc.Content.Find.Execute(Format: true, Replace: Word.WdReplace.wdReplaceAll);

Ответы [ 3 ]

1 голос
/ 13 декабря 2010

Спасибо за ваш ответ, но нет, вы не получаете новый объект Find каждый раз, когда используете точечную запись.Проблема в том, что вы не должны использовать Doc.Content.Find в такой ситуации.Вместо этого вы должны создать новый объект Range и использовать его Find.Как то так:

Word.Range range = doc.Range(0, doc.Content.End);
0 голосов
/ 15 февраля 2019

Я использовал это:

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 голосов
/ 13 декабря 2010

Я считаю, что вам нужно получить объект FIND, а затем использовать его, когда вы обращаетесь к объекту с помощью точечной нотации, как у вас, вы всегда получаете совершенно новый объект FIND, поэтому вы каждый раз теряете настройки .

Примерно так

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