vba - 如何将单词转换为链接到同一文档中书签的超链接?
问题描述
我真的有这个问题。想象一下我有“stackoverflow”这个词。在文件的最后有一个词汇表。现在我需要一个宏来搜索所有出现的 stackoverflow 并将它们替换为指向表中书签的超链接。读者仍然可以看到“stackoverflow”,但可以单击它跳转到词汇表。我可以在“地址”字段中插入在线链接,并认为我需要子地址字段但不知道该放什么..提前谢谢你!
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
解决方案
尝试:
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
推荐阅读
- facebook - Facebook Graph API - 回复页面帖子中的回复
- typescript - 如何使用 Jest 对此控制器进行正确的单元测试
- r - rvest::html_elements 似乎不尊重嵌套(即,限制只为节点集提供结果)
- rust - 无法在 lib.rs 中导入模块
- html - 如何使用 css grid-template-areas 创建特定的布局形状?
- javascript - 如何在 CSS 中将滑块移动到文本下方?
- r - quanteda 搭配和词形还原
- sql - 更新表中的列,该列具有来自同一列的实际 ID 的临时 ID
- python - 为什么 Pyright 不能正确解析这个模块?
- bash - Bash:检查存储库是否存在表现不稳定?