【问题标题】:Converting patterns to hyperlinks将模式转换为超链接
【发布时间】:2022-01-01 02:33:09
【问题描述】:

我正在尝试用从模式派生的超链接替换模式的每个实例。

该模式的格式为 123 WORD 4568,其中 WORD 始终相同,但数字(和数字的数量)会发生变化。例如。 1948 字 12、231 字 3948、92 字 1029。

超链接取决于数字,对于 1948 WORD 12,它类似于 www.word.com/1948/12.html

使用通配符,我可以找到该模式的所有实例,并将它们替换为指向 word.com 的超链接:

Sub InsertLinksTB()

    Set Rng = ActiveDocument.Range

    With Rng.Find
        SearchString = "[0-9]{1,9} WORD [0-9]{1,9}"
        .MatchWildcards = True
        Do While .Execute(findText:=SearchString, Forward:=False) = True
            Link = "www.word.com"

            ActiveDocument.Hyperlinks.Add Anchor:=Rng, _
            Address:=Link, _
            SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.Text
            Rng.Collapse wdCollapseStart
        Loop
    End With

End Sub

考虑到通配符,我无法弄清楚如何使用 SubAddress 为模式的每个实例生成完整的超链接。

【问题讨论】:

    标签: vba ms-word hyperlink wildcard


    【解决方案1】:

    如果模式始终相同,可以使用Split函数获取字符串的元素并构造链接。

    Sub InsertLinksTB()
    
        Set Rng = ActiveDocument.Range
    
        With Rng.Find
            SearchString = "[0-9]{1,9} WORD [0-9]{1,9}"
            .MatchWildcards = True
            Do While .Execute(findText:=SearchString, Forward:=False) = True
                Link = "www.word.com/" & Split(Rng.Text, " ")(0) & "/" & Split(Rng.Text, " ")(2) & ".html"
                
                ActiveDocument.Hyperlinks.Add Anchor:=Rng, _
                    Address:=Link, _
                    SubAddress:="", ScreenTip:="", TextToDisplay:=Rng.Text
                Rng.Collapse wdCollapseStart
            Loop
        End With
    
    End Sub
    

    【讨论】:

    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2015-10-23
    • 2016-07-24
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多