Steve有一系列包含网站地址的单元格(A1:A10),例如,www.example.com。他想知道是否可以在宏内一次在单独的浏览器选项卡中一次打​​开浏览器中的每个地址。

有两种方法可以完成此任务,选择哪种方法很大程度上取决于工作表中数据的性质。如果单元格包含活动的超链接(单击该链接将在浏览器中打开该地址),则可以使用一个相当简单的宏:

Sub FollowHyperlinks1()

Dim MyRange As Range     Dim hl As Hyperlink

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each hl In MyRange.Hyperlinks         hl.Follow     Next hl End Sub

宏仅查看A1:A10范围内的所有超链接,并使用Follow方法在默认浏览器中打开每个超链接。

由于操作系统是将信息从Excel传输到浏览器的方式,因此最好在运行宏之前打开浏览器。这样做的原因是,在测试中,我们发现您实际上可能最终打开了浏览器的两个实例,其中一个实例打开了一些地址,而另一个实例打开了一些地址。

这显然是由于打开浏览器的第一个实例的延迟而发生的。如果在运行宏之前打开浏览器,则没有延迟,并且每个地址在同一浏览器实例的不同选项卡中打开。

如果您的工作表中的地址可能不是活动的超链接,则您不能依赖使用该范围的“超链接”集合。

相反,您需要查看范围内的每个单元格的值:

Sub FollowHyperlinks2()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         ThisWorkbook.FollowHyperlink _           Address:=sTemp     Next cell End Sub

此方法使用FollowHyperlink方法将地址加载到sTemp变量中。在这种情况下,单元格的内容是否为活动的超链接都没有关系。该代码仍然尝试在浏览器中打开它们。

最后,如果您的数据可能不包含完全限定的地址,那么您仍然需要使用其他方法。例如,史蒂夫(Steve)提到在工作表中有诸如www.example.com之类的地址,但到目前为止,该地址仍不适用于示例。如果您的数据开头缺少http://(或某些变体,例如https://),则代码将不会在浏览器中打开地址。在您的数据中有这种特殊性,则对宏进行了一些轻微的修改:

Sub FollowHyperlinks3()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         If InStr(sTemp, "://") = 0 Then             sTemp = "http://" & sTemp         End If         ThisWorkbook.FollowHyperlink _           Address:=sTemp     Next cell End Sub

请注意,此示例检查sTemp的内容,以查看其中是否包含字符“://”。如果不是,则将前缀http://添加到单元格内容中,并且Excel尝试使用FollowHyperlink方法打开修改后的地址。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11413)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:

链接:/ excelribbon-Opening_Sites_in_a_Browser [在浏览器中打开网站]。