2014-11-22 68 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

相关问题