在Word VB.NET中搜索句子并替换超链接

时间:2015-12-16 20:26:18

标签: vb.net hyperlink ms-word

我试图替换或搜索并添加到Word文档中的specyfy句子的超链接。我尝试使用此代码。无论如何代码只改变了第一个找到的单词,而不是文档中的所有单词:

       Dim r As Word.Range
    r = Globals.ThisAddIn.Application.ActiveDocument.Content
    With r.Find
        .ClearFormatting()
        .Text = ("MyWordA MyWordB")
        .MatchWholeWord = True
        .Forward = True
        .Execute()
        'If .Found = True Then r.Hyperlinks.Add(r, "http:\\www.whatever", , "Displayed text")
        Do While .Execute(Forward:=True) = True
            r.Hyperlinks.Add(r, "http:\\www.whatever", , "Displayed text")
            'r.Font.ColorIndex = Word.WdColorIndex.wdBlue 'works for all(?)
        Loop
    End With

当我想在循环中找到单个单词时,Eaven,然后代码找到第一个:

    doc = Globals.ThisAddIn.Application.ActiveDocument
    Dim r As Word.Range = doc.Range
    Dim ww As Word.Range
    For Each ww In r.Words
        If ww.Text = "MyWord" Then _
          ww.Hyperlinks.Add(ww, "http:\\www.whatever", , "Displayed text")
    Next

任何人都可以告诉我如何搜索所有文本以替换/添加我正在寻找的所有文本的超链接?

1 个答案:

答案 0 :(得分:1)

问题是你一遍又一遍地找到相同的文字。在循环中,添加超链接后,需要在添加的超链接后移动范围。最简单的方法是通过调用

来折叠范围
r.Collapse(WdCollapseDirection.wdCollapseEnd)

要解决此类问题,请选择当前范围,以便了解正在发生的事情。

Do While .Execute(Forward:=True) = True

    ' select range for troubleshooting
    r.Select()
    r.Hyperlinks.Add(r, "http:\\www.whatever", , "Displayed text")

    ' move the range after the link
    r.Collapse(WdCollapseDirection.wdCollapseEnd)
Loop