我的最终目标是使用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控制浏览器的新手……请帮助,谢谢大家!
答案 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