基于自动过滤器打开多个超链接导致Excel VBA

时间:2015-03-27 17:59:50

标签: excel-vba hyperlink runtime-error autofilter vba

编辑#1 我想打开多个超链接。所有超链接均适用于.pdf文件。超链接未被排序,即超链接之前或之后的单元可能不是超链接。我正在使用基于自动过滤器的搜索。出于让我们说100个可见行形成自动过滤器,其中60个在指定列中具有超链接。我想使用Excel VBA打开所有这些文件。

我一直在使用

    Sub tobedeleted()

Dim Selrng As Range
Dim srch_cr As Variant

Set Selrng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

srch_cr = Application.WorksheetFunction.Transpose(Selrng)

    Dim hl As Hyperlink
    On Error Resume Next
    For Each hl In srch_cr.Hyperlinks
        hl.Follow
    Next hl

    For Each hl In ActiveWorksheet.Cells.SpecialCells(xlCellTypeVisible).Hyperlinks
    Next hl
End Sub

我无法打开这些超链接。

此外,指定列使用Excel函数超链接,我基本上使用vlookup从另一个工作表中的转储中获取文件位置。列中的超链接功能激活超链接。

1 个答案:

答案 0 :(得分:0)

一个良好的开端是摆脱On Error Resume Next并查看代码抛出的错误。

另外,您说您正在使用AutoFilter查找行,但您的代码正在针对Selection运行。 AutoFilter不会自动选择行。您需要使用

For each hl in Worksheet().Cells.SpecialCells(xlCellTypeVisible).hyperlinks

根据评论中的讨论,我认为有几个问题:

  1. 我不确定你为什么要使用Application.WorksheetFunction.Transpose(),因为它似乎没有给你买任何东西。没有人知道用户可能会选择哪种形状范围,并且重塑它似乎对我没有帮助。
  2. 将您的循环更改为For each hl in selrng.hyperlinks
    • 您目前正在尝试使用 variant .hyperlinks,当.hyperlinks是范围的对象
  3. 如果这没有用,我就是新鲜的想法。