我需要查找所有特定单词并将其设为斜体。 我可以很容易地找到每个单词的第一个出现,但是使用while循环我不能创建一个inifite循环,好像设置起始范围不会更新范围...也许我很傻但是这里是我的逻辑:
首次出现, 制作斜体,
在第一次出现后将起始范围设置为下一个字符,
重复,直到不再出现......
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替换字符串和字符串,效果很好,但我还没有找到将字符和字符串更改为斜体的方法...
答案 0 :(得分:1)
看起来您对Font类的Italic属性感兴趣。
有关示例代码,请参阅Word 2007 VBA - Making some text BOLD & other ITALIC。
答案 1 :(得分:1)
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;
}
}