我有一個.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函數,但我不知道如何去做。在進一步挖掘網絡甚至一些個人想法之後,我能夠提出一個符合我需求的代碼。 –