Javascript VBA要登录网站,请单击加载的网页上的链接并进一步导航

Javascript VBA要登录网站,请单击加载的网页上的链接并进一步导航,javascript,vba,excel,Javascript,Vba,Excel,我正在实现一个VBA代码来自动登录网站,然后在登录成功后,我需要在页面上自动单击按钮/链接,然后从那里填写另一个表单并提交它。到目前为止,该代码用于输入登录信息并单击submit 但从那以后,代码不会单击任何链接或按钮继续。调试时我没有收到任何错误。登录后,代码不会执行任何操作 注意:我不熟悉VBA,需要尽快实施 以下是我正在编写的代码: option Explicit Public Sub Login_3_Website() Dim oHTML_Element As IHTMLElemen

我正在实现一个
VBA
代码来自动登录网站,然后在登录成功后,我需要在页面上自动单击
按钮/链接
,然后从那里填写另一个表单并提交它。到目前为止,该代码用于输入登录信息并单击submit

但从那以后,代码不会单击任何链接或按钮继续。调试时我没有收到任何错误。登录后,代码不会执行任何操作

注意:我不熟悉
VBA
,需要尽快实施

以下是我正在编写的代码:

option Explicit

Public Sub Login_3_Website()

Dim oHTML_Element As IHTMLElement
'Dim oHTML_Elements As IHTMLElement
Dim oHTML_Elements As Object
Dim oHTML_Button As IHTMLButtonElement
Dim oBrowser As InternetExplorer
Dim HTMLDoc As IHTMLDocument
'Dim Element As HTMLLinkElement
Dim Element As Object
Dim elements As Object
Dim HTMLDocs As HTMLDocument
Dim sURL As String

'On Error GoTo Err_Clear
sURL = Worksheets("Sheet1").Cells(2, "B").Value
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
'oBrowser.timeout = 20
oBrowser.navigate sURL
oBrowser.Visible = True

Do
' Wait till the Browser is loaded
Loop Until oBrowser.readyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.document

HTMLDoc.getElementById("login_username").Value = "aaa@gmail.com"

HTMLDoc.getElementById("login_password").Value = "1234"
For Each oHTML_Element In HTMLDoc.getElementsByTagName("button")
If oHTML_Element.ID = "login_button" Then oHTML_Element.Click: Exit For
Next oHTML_Element

With oBrowser
Do While .Busy Or .readyState <> 4
DoEvents
Loop
End With

'Set HTMLDocs = oBrowser.document
'Set elements = HTMLDocs.getElementsByClassName("quick-access-trigger btn")
'Element.Click
'Next
Set Element = HTMLDoc.getElementsByTagName("div")
For Each oHTML_Elements In Element
If oHTML_Elements.innerHTML = "Quick access" Then
oHTML_Elements.Click
End If
Next
End Sub
选项显式
公共子登录\u 3\u网站()
尺寸oHTML\U元件作为IHTML元件
“将oHTML\U元件作为IHTML元件
作为对象的Dim oHTML_元素
将oHTML_按钮调暗为IHTML按钮元件
作为InternetExplorer的Dim oBrowser
作为IHTMLDocument的Dim HTMLDoc
'作为HTMLinkElement的Dim元素
作为对象的暗元素
将图元变暗为对象
作为HTMLDocument的Dim HTMLDocs
作为字符串的Dim sURL
'在出错时转到错误\u清除
sURL=工作表(“表1”).单元格(2,“B”).值
Set oBrowser=新的InternetExplorer
oBrowser.Silent=True
'oBrowser.timeout=20
浏览者
oBrowser.Visible=True
做
'等待浏览器加载
循环直到oBrowser.readyState=readyState\u完成
设置HTMLDoc=oBrowser.document
HTMLDoc.getElementById(“登录用户名”)。值=“aaa@gmail.com"
HTMLDoc.getElementById(“登录密码”).Value=“1234”
对于HTMLDoc.getElementsByTagName(“按钮”)中的每个oHTML_元素
如果oHTML\u Element.ID=“login\u button”,则oHTML\u Element.Click:退出以获取
下一个oHTML_元素
带船首的
请稍等片刻。忙碌或。准备就绪状态4
多芬特
环
以
'设置HTMLDocs=oBrowser.document
'Set elements=HTMLDocs.getElementsByClassName(“快速访问触发器btn”)
'元素。单击
”“接着呢
Set Element=HTMLDoc.getElementsByTagName(“div”)
对于元素中的每个oHTML_元素
如果oHTML_Elements.innerHTML=“快速访问”,则
oHTML_元素。单击
如果结束
下一个
端接头
请帮我处理这个代码,并给我一个修复它的方法。登录后我需要在加载的页面上单击的链接包含以下代码:

<div class="quick-links-wrapper">== $0
<div class="quick-access-trigger btn">
<span>Quick access</span>
<i class="nc-icon-glyph arrows-1_bold-down">
::before
</i>
</div>
==0美元
快速访问
::之前
回答:

visualbasicforapplications
(VBA)是一种仅受IE支持的语言,我认为甚至Edge都不支持它


更好的方法是使用JavaScript编写代码,JavaScript是标准的,并且与跨浏览器兼容。您的代码将更加简单,可以在多种浏览器下工作,并且您将在Developer的社区中找到许多帮助。

请查看下面的链接,了解如何完成您需要做的事情


我相信你不能点击一个按钮,我有一个类似的问题,在这里解决了:这最近也奏效了。很抱歉,如果InStr(ExtractedName,“单击:保存”),则不知道如何在注释集objElementColl=objHTML.getElementsByClassName(“btn”)中为objElementColl ExtractedName=objeelement.outerHTML中的每个对象添加代码>0然后是objElement。单击ExtractedName=1退出结束,如果下一步您为什么要使用
Visual Basic脚本
?这是一种只适用于IE的非通用语言,我不确定Edge是否支持它。而且用户必须接受在他的计算机上执行危险的脚本,所以这对于公开网站来说是一种糟糕的方式…@BryanDavies感谢您的回复。我将尝试添加此代码并执行它。会让你知道它是否有效。@ClementNerma我是VBA新手,没有太多的编码经验。在完成当前项目的过程中,我遇到了一种使用VBA实现它的方法,它很有效,所以我想继续下去。我读过关于Selenium的文章,它也适用于其他浏览器。但我有一个最后期限,需要尽快完成。您可能想查看Analyst's Cave中的一些工具,有一个专门用于VBA web抓取的工具可能会对您有所帮助:这个问题中的代码是Visual Basic for Applications(VBA-查看标记),它与VBScript不同。Edge不支持VBScript,但这与问题无关抱歉,我弄错了帖子,但这并没有改变什么。VBA仅受I.E.太支持。很抱歉给你带来了混乱-_-