我有一个.doc Word文档,标题中有一个文本。 我想从标题中找到单词“MyWord”并添加书签(书签也被称为“MyWord”)。 目前我的代码能够在页眉和页脚中搜索,但我不知道如何选择感兴趣的单词。我使用了一个字符串变量来加载标题的文本内容,我找到了我的单词的开始和结尾。但是,当我选择此范围时,选择将突出显示不同的区域。 下面是代码:Word Interop为标题添加书签
public static void AddBookmarkAnywhere(Microsoft.Office.Interop.Word.Application app, string findText, string bookmarkName)
{
var doc = app.ActiveDocument;
foreach (Microsoft.Office.Interop.Word.Range rngStory in doc.StoryRanges)
{
var internalRangeStory = rngStory;
do
{
AddBookmarkInStory(internalRangeStory, findText, bookmarkName);
try
{
switch (internalRangeStory.StoryType)
{
case Microsoft.Office.Interop.Word.WdStoryType.wdEvenPagesHeaderStory: // 6
case Microsoft.Office.Interop.Word.WdStoryType.wdPrimaryHeaderStory: // 7
case Microsoft.Office.Interop.Word.WdStoryType.wdEvenPagesFooterStory: // 8
case Microsoft.Office.Interop.Word.WdStoryType.wdPrimaryFooterStory: // 9
case Microsoft.Office.Interop.Word.WdStoryType.wdFirstPageHeaderStory: // 10
case Microsoft.Office.Interop.Word.WdStoryType.wdFirstPageFooterStory: // 11
if (internalRangeStory.ShapeRange.Count > 0)
{
foreach (Microsoft.Office.Interop.Word.Shape oShp in internalRangeStory.ShapeRange)
{
if (oShp.TextFrame.HasText != 0)
{
AddBookmarkInStory(oShp.TextFrame.TextRange, findText, bookmarkName);
}
}
}
break;
default:
break;
}
}
catch
{
MessageBox.Show("Some error in function FindReplaceAnywhere");
}
internalRangeStory = internalRangeStory.NextStoryRange;
}
while (internalRangeStory != null);
}
}
private static void AddBookmarkInStory(Microsoft.Office.Interop.Word.Range rngStory, string strSearch, string strBookmarkName)
{
string text = rngStory.Text;
int start = text.IndexOf(strSearch);
int end = start + strSearch.Length;
if(start >= 0)
{
rngStory.Start = start; // incorrect value
rngStory.End = start + strSearch.Length;
rngStory.Select();
rngStory.Bookmarks.Add(strBookmarkName, rngStory);
}
}
谢谢辛迪。我第一次尝试使用Find函数,但我不知道如何去做。在进一步挖掘网络甚至一些个人想法之后,我能够提出一个符合我需求的代码。 –