我想在 Excel Vba 中创建一个代码,以帮助我单击一个 js图像按钮 网站。
这是我尝试过的。
Sub test()
Dim ie As Object
Set ie = New InternetExplorer
WebPage = "http://myweb.com" 'a makeup link, not really my site
ie.Visible = True
ie.Navigate WebPage
Application.Wait (Now() + TimeValue("00:00:05"))
ie.Document.getElementById("ctl00_ContentPlaceHolder1_tcSearchRoute_tabSearchRoute2_ibtnSearchR2").Click
End Sub
运行代码时,它会显示
运行时错误'-2147217848(80010108)' 自动化错误 调用的对象已与其客户端断开连接。
这是该js图片按钮的html代码
<input type="image" name="ctl00$ContentPlaceHolder1$tcSearchRoute$tabSearchRoute2$ibtnSearchR2" id="ctl00_ContentPlaceHolder1_tcSearchRoute_tabSearchRoute2_ibtnSearchR2" src="../Images/button/btn_searchAccount.png" alt="Search Account" style="border-width:0px;">
答案 0 :(得分:0)
您的.Click
行对我来说似乎还可以。在ie.Quit
之前,您是否一直在使用End Sub
在每次运行代码时关闭实例?检查您为初学者正在运行的InternetExplorer
个实例。
使用以下适当的页面加载等待时间:
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
那么您也可以尝试
ie.Navigate2 "http://myweb.com" & ie.Document.querySelector("#ctl00_ContentPlaceHolder1_tcSearchRoute_tabSearchRoute2_ibtnSearchR2").src
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
或者只是重试您现有的线路。
答案 1 :(得分:0)
您可以尝试如下创建和设置IE对象。
Set ie = CreateObject("InternetExplorer.Application")
or try
Dim ie As SHDocVw.InternetExplorer
Set ie = New InternetExplorerMedium
or try
Set ie = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
您可以在设置IE对象之后或IE页面更改/刷新时尝试添加这些等待循环之一。
Set ie = CreateObject("InternetExplorer.Application")
Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
While ie.busy
DoEvents
Wend
Do While IE.ReadyState = 4: DoEvents: Loop
Do Until IE.ReadyState = 4: DoEvents: Loop
此外,您可以尝试在IE设置中禁用启用增强的受保护模式选项。
转到“工具”->“ IE选项”->“高级”选项卡->“安全性”部分-禁用 “启用增强的保护模式”。
参考:
VBA Error: The object invoked has disconnected from its clients