如何在Office Interop Word中查找单词并将其更改为斜体

本文关键字:斜体 单词 查找 Office Interop Word | 更新日期: 2024-09-25 19:10:29

我需要找到所有出现的特定单词,并将它们变成斜体。我可以很容易地找到每个单词的第一个出现,但使用while循环我找不到,它会创建一个不匹配的循环,就好像设置开始范围不会更新范围一样。。。也许我很傻,但这是我的逻辑:

首次出现,制作斜体,

将起始范围设置为第一次出现后的下一个字符,

重复,直到不再出现。。。

appWord = new Microsoft.Office.Interop.Word.Application();
wordDocument = appWord.Documents.Open("pathToFile", Type.Missing, false);
Microsoft.Office.Interop.Word.Range rng = wordDocument.Range();
string[] latinTerms = new []{"inter alia","invicta" };
for (int i = 0; i < latinTerms.Length; i++)
{
        while (rng.Text.IndexOf(latinTerms[i]) != -1)
        {
            int start = rng.Text.IndexOf(latinTerms[i]);
            int end = start + latinTerms[i].Length;
            Microsoft.Office.Interop.Word.Range tmpRange = wordDocument.Range(start, end);
            tmpRange.Select();
            Microsoft.Office.Interop.Word.Selection currSel = appWord.Selection;
            currSel.ItalicRun();
            rng.Start = end + 1;
        }
}

我使用Find.Execute来替换字符和字符串,效果很好,但我还没有找到将字符和字符串改为斜体的方法。。。

如何在Office Interop Word中查找单词并将其更改为斜体

private void FindAndItalicize(Microsoft.Office.Interop.Word.Application doc, object findText)
    {
        var rng = doc.Selection.Range;
        while(rng.Find.Execute(findText))
        {
            rng.Font.Italic = 1;
        }
    }

您似乎对Font类的Italic属性感兴趣。

请参阅Word 2007 VBA-使一些文本粗体&其他ITALIC的示例代码。