早上好,
我正在开展一个VBA项目,我想访问内部公司,需要登录,网站并从表中提取数据。我已成功编写将导航到正确网站的代码,然后将下拉框值从“所有事务”修改为“运行记录”。我遇到的问题是,一旦下拉框更新,我就不能让表中的数据刷新。在网站上,下拉字段旁边是一个“Go”超链接。每当我尝试激活链接时,使用vba,它会重置下拉列表并且我不会显示我想要的数据。
我能够找到一个类似的帖子,其中用户解释说该问题与受保护的站点有关,并且需要使用.FireEvent。虽然这个概念对我而言是有意义的,但另一个故事。我的情况与其他情况的最大区别在于,当他的下拉框被更改时,它将激活该事件。在我的情况下,有一个单独的ID,我上面提到的“Go”超链接,需要在输入下拉值后激活。
以下是HTML代码的一部分,其中包含下拉框选项以及“GO”超链接。
<select name="classList" onchange="selectClass(this);"><option class=tblrow2 value="All" selected=selected>All Schedules</option>
<option value="A" >
Transactions-Financial
</option>
<option value="N" >
Transactions-Non-Financial
</option>
<option value="RB" >
Running Balance
</option></select>
<input type="hidden" name="classindx" id = "classindx" value="" />
<a href="#" onClick="submitTransForm()"> Go </a>
这是我修改下拉框值的代码的一部分。
'try to get form by ID
Set frm = ie.Document.getElementByID("myFormID")
'try to get form by name
If frm Is Nothing Then Set frm = ie.Document.getElementsByName("facilityFeeRepayForm").Item(0)
'Set ieButton = ie.Document.getElementById("classindx") Here I tried to treat the Go hyperlink like a button but that didn't work either.
If frm Is Nothing Then
Else
ie.Visible = True
For Each element In frm.elements
On Error Resume Next
Select Case element.Name
Case "classList": element.Value = "RB"
ie.getElementByID("classindx").FireEvent("onClick") 'nothing happens with this code
While ie.ReadyState <> 4: DoEvents: Wend
End Select
Next
End If
感谢您提供的任何帮助。
谢谢你, 约翰
答案 0 :(得分:2)
不要点击链接,请尝试以下操作:
ie.Document.parentWindow.execScript "submitTransForm()", "JavaScript"