如何自动化Excel到Google搜索多个搜索查询,每个查询在不同的IE选项卡中打开

时间:2019-05-03 14:05:30

标签: excel vba search web-scraping

我希望VBA宏能够使一列单元格自动在Internet Explorer的多个选项卡中打开。 单元格是Google的搜索查询,每个单元格都在具有定义范围的多个标签中打开。

Sub GoogleSearch()

    Dim objIEBrowser

    Set objIEBrowser = CreateObject("InternetExplorer.Application")

    objIEBrowser.Visible = True

    Dim SearchTerm As String

    For Each Cell In Range("D6:D14")

        SearchTerm = Cell
        SearchTerm = Replace(SearchTerm, " ", "+")

        objIEBrowser.navigate "https://www.google.com/?gws_rd=ssl#q=" & SearchTerm

    Next

End Sub

这将导致宏打开最后一个单元格(D14),而不搜索或打开所有其他单元格。

1 个答案:

答案 0 :(得分:1)

您正在导航到同一窗口中的每个URL。您需要打开新的标签页或窗口。标记要做什么的常量here

这是少量的单元格,因此我没有将这些搜索值读入数组。通常,我会将其读入数组,然后循环该数组,而不是在每个单元格的循环中从工作表中来回往返地产生重复的I / O成本。

新窗口:

Option Explicit
Public Sub GoogleSearch()
    Dim objIEBrowser, searchTerm As String, i As Long, cell As Range
    Set objIEBrowser = CreateObject("InternetExplorer.Application")

    objIEBrowser.Visible = True

    For Each cell In ActiveSheet.Range("D6:D14") 'better to use explicit sheet name
        searchTerm = Replace$(cell.Value, " ", "+")

        If i = 0 Then
            objIEBrowser.navigate "https://www.google.com/?gws_rd=ssl#q=" & searchTerm
        Else
            objIEBrowser.document.parentWindow.execScript "window.open('" & "https://www.google.com/?gws_rd=ssl#q=" & searchTerm & "');"
        End If
        i = i + 1
    Next
    Stop
     objIEBrowser.Quit
End Sub

或:

Option Explicit
Public Sub GoogleSearch()
    Dim objIEBrowser, searchTerm As String, i As Long, cell As Range
    Set objIEBrowser = CreateObject("InternetExplorer.Application")
    objIEBrowser.Visible = True
    For Each cell In ActiveSheet.Range("D6:D14") 'better to use explicit sheet name
        searchTerm = Replace$(cell.Value, " ", "+")
        objIEBrowser.Navigate2 "https://www.google.com/?gws_rd=ssl#q=" & searchTerm, CLng(1)
    Next
    Stop
     objIEBrowser.Quit
End Sub

新标签页:

Option Explicit
Public Sub GoogleSearch()
    Dim objIEBrowser, searchTerm As String, i As Long, cell As Range, flag As Long
    Set objIEBrowser = CreateObject("InternetExplorer.Application")

    objIEBrowser.Visible = True
    i = 0
    For Each cell In ActiveSheet.Range("D6:D14") 'better to use explicit sheet name
        searchTerm = Replace$(cell.Value, " ", "+")
        flag = IIf(i = 0, 1, 2048)
        objIEBrowser.Navigate2 "https://www.google.com/?gws_rd=ssl#q=" & searchTerm, CLng(flag)
        i = i + 1
    Next
    Stop
     objIEBrowser.Quit
End Sub