Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将单词转换为链接到同一文档中书签的超链接?_Vba_Ms Word - Fatal编程技术网

Vba 如何将单词转换为链接到同一文档中书签的超链接?

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

我真的有这个问题。假设我有“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
尝试:


谢谢!你能解释一下这部分吗?我在那里得到了索引越界错误:
带有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