如何使用VBA在Google中输入文本并单击搜索

时间:2018-08-29 13:52:18

标签: vba internet-explorer browser login web

我的最终目标是使用VBA自动打开浏览器,并输入网站的用户名和密码,然后单击“登录”以进一步导航到其他页面并下载文件!

但是,我想从最简单的试用开始,那就是进行Google搜索!我认为这个想法很相似,因为两者都需要输入某些内容并单击某些内容。

我在IE中找到-> Tools(Alt + X)-> F12开发人员工具可以显示网站的html代码,并且更加方便,看来我可以选择区域并获取我感兴趣的关键字!这是这些区域的2张屏幕截图,the first one is for the search bar,我找到了"input name = "q"and the second one is for the search button,我找到了"input name = "btnK"

这是我的代码:

Sub test()

Set IE = CreateObject("InternetExplorer.Application")
my_url = "https://www.google.ca/?gws_rd=ssl"
IE.Visible = True
IE.navigate my_url

'For example, if I want to search "123"
IE.Document.getElementById("q").Value = "123"

'Click the "Search" button
IE.Document.getElementById("btnK").Click


End Sub

它在IE.Document.getElementById("q").Value = "123"处返回错误,

  

对象“ iwebbrowser2”的方法“文档”失败。

不知道哪里出了问题。我真的是如何使用VBA控制浏览器的新手……请帮助,谢谢大家!

2 个答案:

答案 0 :(得分:1)

HTML元素的名称与ID不同。

例如,"q"不是搜索栏的ID,而是名称。它的ID为"lst-ib"

添加代码:

Sub test()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    my_url = "https://www.google.ca/?gws_rd=ssl"
    ie.Visible = True
    ie.navigate my_url

    Do While ie.Busy
        DoEvents
    Loop
    Wait 3

    'For example, if I want to search "123"
    ie.Document.getElementById("lst-ib").Value = "123"

    ' Pressing enter
    SendKeys "{ENTER}"

End Sub

Sub Wait(seconds As Integer)

    Application.Wait Now + timeValue("00:00:0" & CStr(seconds))

End Sub

答案 1 :(得分:1)

确保使用正确的等待语法,以便页面已加载。您也不需要循环即可提交表单。只需通过

直接提交
.forms(0).submit

代码:

Option Explicit
Public Sub test()
    Const MY_URL = "https://www.google.ca/?gws_rd=ssl"
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate MY_URL
        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .getElementById("lst-ib").Value = "123"
            .forms(0).submit
        End With
        'Other code
        '.Quit  '<== Uncomment me later
    End With
End Sub