Vba 如何将单词转换为链接到同一文档中书签的超链接?
我真的有这个问题。假设我有“stackoverflow”一词。文档末尾有一个词汇表。现在我需要一个宏来搜索所有出现的stackoverflow,并用指向表中书签的超链接替换它们。读者仍然可以看到“stackoverflow”“但是可以点击它跳转到词汇表。我可以在“地址”字段中插入在线链接,我想我需要子地址字段,但不知道该放什么。提前谢谢Vba 如何将单词转换为链接到同一文档中书签的超链接?,vba,ms-word,Vba,Ms Word,我真的有这个问题。假设我有“stackoverflow”一词。文档末尾有一个词汇表。现在我需要一个宏来搜索所有出现的stackoverflow,并用指向表中书签的超链接替换它们。读者仍然可以看到“stackoverflow”“但是可以点击它跳转到词汇表。我可以在“地址”字段中插入在线链接,我想我需要子地址字段,但不知道该放什么。提前谢谢 Sub Convert_String() Dim Word Dim R As Range Dim Tabellenanzahl Dim T As Table D
Sub Convert_String()
Dim Word
Dim R As Range
Dim Tabellenanzahl
Dim T As Table
Dim Link As Hyperlink
Set R = ActiveDocument.Range
Tabellenanzahl = ActiveDocument.Tables.Count
Set T = ActiveDocument.Tables(Tabellenanzahl)
ActiveDocument.Bookmarks.Add "Anker", T.Range
For Z = 2 To T.Rows.Count
Set Wort = T.Cell(Z, 1)
With R.Find
.ClearFormatting
.Text = Word
.Forward = True
.Wrap = wdFindStop
End With
Do While R.Find.Execute
R.Hyperlinks.Add Anchor:=Selection, SubAddress:="Anker", TextToDisplay:="GoToGlossaryTest"
Loop
Next
End Sub
尝试:
谢谢!你能解释一下这部分吗?我在那里得到了索引越界错误:
带有Rng.End=.End-1 strFnd=Trim(Split(.Text,vbCr)(0))BkMkNm=Replace(strFnd,“,”).Bookmarks.Add BkMkNm.replicate End With
如果你有时间评论更多的位置,我会很高兴。特别是上面提到的部分和这一部分:Set HLnk=.Hyperlinks.Add(.replicate,BkMkNm.Text).End=HLnk.Range.End.collapseend.Find.Execute
我能看到发生错误的唯一方法是,如果引用单元格包含空的第一段,或者书签名称中有一个非法字符。生成错误消息的是哪一行?您可以找到完整的解释Word的VBA帮助文件中的各种方法。是的,我在最后有空行和一些奇怪的字符,但写了一个函数来清除这些单词。谢谢!
Sub GlossaryLinker()
Application.ScreenUpdating = False
Dim Tbl As Table, Rng As Range, HLnk As Hyperlink
Dim strFnd As String, BkMkNm As String, r As Long
With ActiveDocument
Set Tbl = .Tables(.Tables.Count)
For r = 2 To Tbl.Rows.Count
With Tbl.Cell(r, 1)
Set Rng = .Range
With Rng
.End = .End - 1
strFnd = Trim(Split(.Text, vbCr)(0))
BkMkNm = Replace(strFnd, " ", "_")
.Bookmarks.Add BkMkNm, .Duplicate
End With
End With
Set Rng = .Range(.Range.Start, Tbl.Range.Start)
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = False
.Text = strFnd
.Wrap = wdFindStop
.MatchWholeWord = True
.MatchWildcards = False
.MatchCase = True
.Execute
End With
Do While .Find.Found
If .InRange(Rng) = False Then Exit Do
Set HLnk = .Hyperlinks.Add(.Duplicate, , BkMkNm, , .Text)
.End = HLnk.Range.End
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Next
End With
Application.ScreenUpdating = True
End Sub