使用VBA导航网站并修改下拉框

时间:2014-02-05 16:58:36

标签: html excel vba

早上好,

我正在开展一个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="" />
            &nbsp;&nbsp;<a href="#" onClick="submitTransForm()">&nbsp;Go&nbsp;</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

感谢您提供的任何帮助。

谢谢你, 约翰

1 个答案:

答案 0 :(得分:2)

不要点击链接,请尝试以下操作:

ie.Document.parentWindow.execScript "submitTransForm()", "JavaScript"