我想在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;">
你的.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
或者只是重试现有的线路。
您可以尝试创建和设置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