如何添加指向所有标题 1 样式文本的链接?

How to add links to all Heading 1 style text?

该代码旨在向所有标题 1 样式文本添加相同的 hyperlink。 (目的:单击任何标题可将您带到文档的顶部)。

它适用于第一个标题样式文本。它不会前进到下一个实例。

我发现这是由于添加了 hyperlink 的行造成的。删除此行后,将找到所有标题 1 样式的文本(但当然我无法添加 link)。

Sub addLinksToAllTextHavingCertainStyle()
Dim r As Range
Set r = ActiveDocument.Content
r.Find.ClearFormatting
Do
    With r.Find
        .Text = ""
        .Replacement.Text = ""
        .Style = "Heading 1"
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
        .Execute
    End With
    r.Select 'for testing
    ActiveDocument.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:="_top", ScreenTip:=""
Loop
End Sub

您正在循环错误的代码部分。如您所写,您的代码循环整个查找,这意味着它每次都从头开始。

只是Find的执行需要循环,你设置的参数会保留。执行 Find 时,执行 Find 的范围被重新定义为找到的匹配项,因此在循环中您需要将范围折叠到末尾以避免匹配无休止 re-found.

Sub addLinksToAllTextHavingCertainStyle()
    Dim r As Range
    Set r = ActiveDocument.Content
    
    With r.Find
        .ClearFormatting
        .Text = ""
        .Replacement.Text = ""
        .Style = "Heading 1"
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
    End With
    Do While r.Find.Execute = True
        ActiveDocument.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:="_top", ScreenTip:=""
        r.Collapse wdCollapseEnd
    Loop
End Sub