VBA在一行中打开所有Web链接

时间:2016-06-26 12:40:13

标签: excel vba excel-vba excel-2007

我有一个包含2个工作表的Excel文件。

  • interface MyCallback { (...args: any[]): any; } 包含在单元格D3中创建的下拉列表,其中包含国家/地区列表和“发布”字样。按钮。

  • Sheet1包含"国家/地区名称"列A中的列和B,C,D等各自的Web链接。例如,对于A1中的国家/地区名称为澳大利亚,相应的Web链接位于B1,C1,D1等中。

单击启动按钮,它应该打开连续可用的该国家/地区的所有链接。如何在Excel VBA中实现这一目标?

样本表可在以下位置查看:

https://docs.google.com/spreadsheets/d/17PqwEvrvO4JCaK5PNzK_D-JQfW3aj4KzZ2R40QBp2V8/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

通过将按钮链接到宏LaunchWebPages来尝试以下代码。

启动网页的方法是使用运行exe的Shell命令,并将链接作为参数传递。

Option Explicit

Public Const BROWSER_EXE = "C:\Program Files\Internet Explorer\iexplore.exe"

Public Sub LaunchWebpages()

    Dim wsOptions As Worksheet
    Dim rngOption As Range
    Dim wsLinks As Worksheet
    Dim rngCountry As Range
    Dim lngCounter As Long, lngLinkCount As Long
    Dim rngLink As Range
    Dim strLink As String

    'get input
    Set wsOptions = ThisWorkbook.Worksheets("Sheet1")
    Set rngOption = wsOptions.Range("D3")

    'find key on other sheet
    Set wsLinks = ThisWorkbook.Worksheets("Sheet2")
    Set rngCountry = wsLinks.Columns("A:A").Find(What:=rngOption.Text)

    'quit if no match
    If rngCountry Is Nothing Then
        MsgBox "No match found for " & rngOption.Text
        Exit Sub
    End If

    'open links
    lngLinkCount = rngCountry.End(xlToRight).Column
    For lngCounter = 2 To lngLinkCount
        Set rngLink = wsLinks.Cells(rngCountry.Row, lngCounter)
        strLink = rngLink.Text
        Shell BROWSER_EXE & " " & strLink, vbNormalNoFocus
    Next lngCounter

End Sub

我已将iexplore.exe命名为,因此此宏将使用Internet Explorer作为Web浏览器。您可能更愿意将其更改为Chrome或其他内容。