2017-02-03 99 views
0

通过删除命名的范围,到指定范围的超链接可能会“断开”。发生这种情况时,单击超链接将显示一条消息“引用无效”。有没有办法自动搜索工作簿来查找这些破碎的超链接?检查Excel工作簿是否存在损坏的超链接

+1

当引用超链接时,“指定范围”是什么意思?如果你的问题是“能否自动搜索一个不涉及有效地址或目标的超链接”,你可以,但你需要VBA来这样做。 –

+0

是的,的确,这就是我的意思。感谢@Ron Rosenfeld。我不应该在构建VBA解决方案时遇到麻烦。我只是想确保没有更简单的解决方案。 –

回答

0

继@Ron Rosenfeld的建议,我将需要使用VBA,我创建了以下来解决问题。

Public Sub CheckForBrokenLinks() 
    Dim targetWorkbook As Workbook 
    Dim searchSheet As Worksheet 
    Dim checkLink As Hyperlink 
    Dim testRange As Range 

    Set targetWorkbook = Application.ActiveWorkbook 

    For Each searchSheet In targetWorkbook.Worksheets 
     For Each checkLink In searchSheet.Hyperlinks 
      If Not checkLink.SubAddress = "" Then 
       If Not DoesAddressExist(searchSheet, checkLink.SubAddress) Then 
        Debug.Print "I think the following link is broken:" 
        Debug.Print " Link name: " & checkLink.Name 
        Debug.Print " Sheet name: " & searchSheet.Name 
        Debug.Print " Link target: " & checkLink.SubAddress 
        If checkLink.Type = 0 Then 
         Debug.Print " Link range: " & checkLink.Range.address 
        End If 
       End If 
      End If 
     Next checkLink 
    Next searchSheet 
End Sub 

Private Function DoesAddressExist(searchSheet As Worksheet, address As String) As Boolean 
    Dim testRange As Variant 
    On Error Resume Next 
    Set testRange = searchSheet.Evaluate(address) 
    DoesAddressExist = Err.Number = 0 
    Err.Clear 
    On Error GoTo 0 
End Function 
相关问题