在浏览器中打开网站(Microsoft Excel)
史蒂夫(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培训的来源。
本提示(11414)适用于Microsoft Excel 2007、2010、2013和2016。您可以在下面的Excel的较旧菜单界面中找到此提示的版本:`link:/ excel-Opening_Sites_in_a_Browser [在浏览器中打开网站]。