如何使用Excel VBA引用形状的超链接

时间:2015-03-10 10:46:26

标签: vba excel-vba excel

我有一个包含多个超链接的电子表格,其中一些超链接来自形状。我试图遍历它们,看看它们中的每一个指向哪个以便稍后删除其中一些。对于单元格中包含的超链接,以下循环有效:

Sub a()
  Dim ws As Worksheet, hl As Hyperlink, o As Shape

  For Each ws In Worksheets
    For Each hl In ws.Hyperlinks
      Debug.Print hl.Address
    Next
  Next
End Sub

但这似乎跳过了源自形状或其他物体的所有超链接。

我有什么办法可以循环使用这些吗?我尝试了类似的东西:

Sub a()
  Dim ws As Worksheet, hl As Hyperlink, o As Shape


  For Each ws In Worksheets
    For Each o In ws.Shapes
      For Each hl In o.Hyperlinks
        Debug.Print hl.Address
      Next
    Next
  Next
End Sub

但是这会在debug.print行上给出运行时错误91。谷歌搜索没有给我什么。那么,你们有没有想过如何打印地址?

1 个答案:

答案 0 :(得分:3)

一个Shape没有.Hyperlinks属性,只有一个.Hyperlink属性,如果没有关联的超链接,你会收到错误,所以你需要一个错误处理程序。例如:

        On Error Resume Next
        Set hl = o.Hyperlink
        On Error GoTo 0
        If Not hl Is Nothing Then 
            Debug.Print hl.Address
            set hl = Nothing
        End If