2010-12-09 91 views
1

我用的是这样的:如何搜索特定字体在Word文档中与iterop

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

但是当我通过代码名称属性不会改变。 谢谢。


我与VS2010和MS Word 2007年工作,我想找到与“宋体”全部替换“宋体”的字体。

这里发生了什么:

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); 
+0

你能告诉我们更多的代码吗?对于初学者来说,在这里的代码片段中,您将name属性设置为常量。 – ForEachLoop 2010-12-10 15:59:43

回答

1

感谢您的答复,但没有你没有得到一个新的查找每次使用圆点符号时对象。问题是你不应该在这种情况下使用Doc.Content.Find。相反,您必须创建一个新的Range对象并使用它的Find。类似这样的:

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

很高兴您解决了您的问题,但是您可能需要仔细检查断言,指出在您通过像这样的点符号进行引用时不会获得新的Find对象。 – DarinH 2010-12-13 20:39:32

0

我相信你需要获得FIND对象,然后使用它,当你通过点符号指代对象像你这样,你总是给我一个全新的找到对象,所以你每次都会丢失你的设置。

像这样的事情

With Doc.content.Find 
    .clearFormatting 
    .Font.name = "blah" 
    .Execute ..... 
End With 
相关问题