如何同时打开多个连接的超链接?

如何同时打开多个连接的超链接?

我使用了 Concatenate 函数来连接链接,如下所示:

Column 1: http://twitter.com/
Column 2: username
Column 3: http://twitter.com/username

我实际上写了这样的函数:

=hyperlink(CONCATENATE(cell1,cell2))

现在它将所有单元格显示为链接。接下来,我转到 Visual Basic 并添加以下模块(它允许我一次打开多个链接):

Sub Hyperlink_Follow()
For Each c In Selection
On Error Resume Next
c.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Next
End Sub

接下来,我选择了链接并运行宏,但什么也没有发生。

如果您按照上述步骤并运行如下链接:

http://google.com
http://twitter.com
http://reddit.com

运行正常。问题出在串联链接上。

知道原因吗?有什么解决方法吗?

答案1

据我所知,它失败是因为使用HYPERLINKSExcel 函数创建的超链接未包含在HYPERLINKS单元格的 VBA 集合中。尝试使用Debug.Print c.Hyperlinks(1).Address并注意它不会按公式打印创建超链接的单元格的 URL。通过尝试在 Excel 中编辑超链接,这得到了进一步的支持。右键单击具有该HYPERLINK功能的单元格只会为您提供“删除超链接”选项,单击它不会执行任何操作。常规超链接允许您编辑、打开或删除它。

这是一种解决方法,首先尝试提取值,如果失败,则提取单元格的文本值。请注意,如果您在公式中HYPERLINK(1).ADDRESS使用参数,则此方法将不起作用,因为它将被读取为单元格值。friendly_nameHYPERLINK

Sub Hyperlink_Follow()
    Dim c As Range
    Dim url As String
    For Each c In Selection.Cells
        url = ""
        On Error Resume Next
        url = c.Hyperlinks(1).Address
        If url = "" Then url = c.Value
        ThisWorkbook.FollowHyperlink url
        Application.Wait Now() + TimeValue("00:00:03")
    Next
End Sub

请注意,我还在每个 URL 之间添加了 3 秒的暂停,因为我发现一次打开太多 URL 往往会覆盖上次创建的窗口,而不是创建一个新窗口。这可能只是因为我正在使用 IE 工作。您可以测试一下,如果不需要,可以将其删除。

相关内容