有没有办法在MS Word中列出破坏的内部超链接与VBA? (超链接子地址)

时间:2018-01-25 20:40:56

标签: vba hyperlink ms-word

在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

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

但是,我并不清楚如何验证SubAddress是否正确。例如,程序输出的摘录显示:

_Find_a_Staff_1
_Edit_Organization_Settings_2
_Set_the_Staff
_Find_a_Staff_1

但是没有明显的方法可以说出"正确的"后缀应该是给定的标题。有关如何检查这些是否有效的任何想法?

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

1 个答案:

答案 0 :(得分:0)

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

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