2014-11-22 46 views
0

我有一個MS Word加載項需要從一系列文本中完全基於其格式提取文本:在我的情況下,特別是如果文本帶下劃線或需要找到加下劃線或敲入的字符/單詞的範圍,以便我可以跟蹤它們。使用Word interop找到一個帶有特定格式的文本的範圍

我的第一個想法是使用Range.Find,因爲是outlined here,但是當我不知道該字符串是什麼,我正在尋找這是行不通的:

var rng = doc.Range(someStartRange, someEndRange); 

rng.Find.Forward = true; 
rng.Find.Format = true; 
// I removed this line in favor of putting it inside Execute() 
//rng.Find.Text = ""; 

rng.Find.Font.Underline = WdUnderline.wdUnderlineSingle; 

// this works 
rng.Find.Execute(""); 

int foundNumber = 0; 

while (rng.Find.Found) 
{ 
    foundNumber++; 
    // this needed to be added as well, as per the link above 
    rng.Find.Execute(""); 
} 

MessageBox.Show("Underlined strings found: " + foundNumber.ToString()); 

我會愉快地解析發表自己的文字,但不知道如何做到這一點,同時仍然知道格式。提前感謝任何想法。

編輯:

我改變了我的代碼來解決找到強調的問題,並與改變while循環永遠不會終止。更具體地說,rng.Find.Found找到帶下劃線的文本,但它會一遍又一遍地找到相同的文本,並且永遠不會終止。

編輯2: 一旦我加了while循環中的附加Execute()呼叫時,發現需要發揮作用。

回答

2

你需要

rng.Find.Font.Underline = wdUnderline.wdUnderlineSingle; 

(目前您正在設置格式指定的RNG,而不是格式化的查找)

+0

感謝您的建議,但這並不解決根本問題:現在,while循環會一直持續下去。 – c0nn 2014-11-24 15:19:49

+0

在我做了您的更改並在第二次編輯中進行了更改後,查找按需要進行。標記你的答案是正確的。謝謝! – c0nn 2014-11-24 15:53:44

相關問題