问题 如何以编程方式编辑Word文档中的所有超链接?


是否有我可以编写的宏,VBA代码或VBScript来编辑Word文档中所有超链接的URL? Word 97-2003或docx格式。


5430
2017-07-28 16:47


起源

你想做什么样的编辑?您想循环浏览每个超链接还是对每个超链接进行相同的更改? - NakedBrunch
基本上我想对每个超链接进行替换。文件服务器名称已更改。 - jinsungy


答案:


Dim doc As Document
Dim link, i
'Loop through all open documents.
For Each doc In Application.Documents
    'Loop through all hyperlinks.
    For i = 1 To doc.Hyperlinks.Count
        'If the hyperlink matches.
        If LCase(doc.Hyperlinks(i).Address) = "http://www.yahoo.com/" Then
            'Change the links address.
            doc.Hyperlinks(i).Address = "http://www.google.com/"
            'Change the links display text if desired.
            doc.Hyperlinks(i).TextToDisplay = "Changed to Google"
        End If
    Next
Next

这是所有的链接 超链接方法和属性


12
2017-07-28 20:07



工作得很好。谢谢。 - jinsungy
帮帮我,谢谢! - Denys Wessels
这不适用于带有超链接的图像= /你知道如何获得这些吗? - Roy Calderon


这对我帮助很大。用户通过其映射驱动器打开了包含超链接的Word文档,而不是通过网络进行长途操作。数以百计的文档将被保存!

我用mid()函数:

Sub FixMyHyperlink()

    Dim doc As Document
    Dim link, i

    'Loop through all open documents.
    For Each doc In Application.Documents
        'Loop through all hyperlinks.
        For i = 1 To doc.Hyperlinks.Count
            'If the hyperlink matches.
            If LCase(doc.Hyperlinks(i).Address) Like "*partOfHyperlinkHere*" Then
                'Change the links address. Used wildcards (*) on either side.
                doc.Hyperlinks(i).Address = Mid(doc.Hyperlinks(i).Address, 70,20)        '
                'Change the links display text if desired.
                'doc.Hyperlinks(i).TextToDisplay = "Oatmeal Chocolate Chip Cookies"
            End If
        Next
    Next
End Sub

0
2017-10-22 21:13





感谢Tester提供的解决方案,用于快速更换:

Sub ReplaceLinks()

Dim doc As Document
Dim link, i

'Loop through all open documents.
For Each doc In Application.Documents
    'Loop through all hyperlinks.
    For i = 1 To doc.Hyperlinks.Count

        'Update old bookmarks to https
        doc.Hyperlinks(i).Address = Replace(doc.Hyperlinks(i).Address, "gopher:", "https://")

   Next
Next
End Sub

0
2018-03-17 05:58