如何使用Excel VBA单击IE中的js按钮?

问题描述 投票:0回答:2

我想在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;">
excel vba internet-explorer web-scraping
2个回答
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

或者只是重试现有的线路。


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

© www.soinside.com 2019 - 2024. All rights reserved.