我试图替换或搜索并添加到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
任何人都可以告诉我如何搜索所有文本以替换/添加我正在寻找的所有文本的超链接?
答案 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