【问题标题】:Is there a way to list broken internal hyperlinks with VBA in MS Word? (Hyperlink Subaddress)有没有办法在 MS Word 中使用 VBA 列出损坏的内部超链接? (超链接子地址)
【发布时间】:2018-01-27 00:54:51
【问题描述】:

在 MS Word 中,您可以创建指向“此文档中的位置”的超链接,以便链接将您带到同一 Word 文件中的其他位置。但是,如果您更改标题或在这些链接周围移动内容,有时会中断。我想写一些 VBA 来检查损坏的链接。

使用 VBA,您可以使用以下代码列出每个超链接子地址:

Sub CheckLinks()
    Set doc = ActiveDocument
    Dim i
    For i = 1 To doc.Hyperlinks.Count
        Debug.Print doc.Hyperlinks(i).SubAddress
    Next
End Sub

上述代码的输出也与超链接的域代码中显示的内容相匹配。

但是,我不太清楚如何验证子地址是否正确。例如,程序输出的一段摘录显示:

_Find_a_Staff_1
_Edit_Organization_Settings_2
_Set_the_Staff
_Find_a_Staff_1

但是没有明显的方法来判断给定标题的“正确”后缀应该是什么。关于如何检查这些是否有效的任何想法?

有没有办法获取文档中标题的所有有效子地址的列表?

【问题讨论】:

  • 啊,看来我必须将 Bookmarks.ShowHidden 设置为 true,以便可以搜索隐藏的、自动创建的书签。

标签: vba hyperlink ms-word


【解决方案1】:

下面的代码将列出文档中不存在相应书签的超链接。 (请注意,它只检测丢失的链接,而不检测到错误位置的链接。)

Sub CheckLinks()
    Dim doc As Document
    Set doc = ActiveDocument
    Dim i, j
    Dim found As Boolean

    For i = 1 To doc.Hyperlinks.Count
       found = False
       For j = 1 To doc.Bookmarks.Count
         If doc.Range.Bookmarks(j).Name = doc.Hyperlinks(i).SubAddress Then
            found = True
         End If
       Next
       If found = False Then
          Debug.Print doc.Hyperlinks(i).SubAddress
       End If
    Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2019-07-12
    • 2013-07-24
    • 2016-06-14
    • 2013-10-02
    相关资源
    最近更新 更多