2010-12-09 98 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