2017-02-03 101 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 
相關問題