VBA IE Onclick函数调用

时间:2016-03-02 06:10:41

标签: vba ie-automation

研究员,

我试图用VBA进行IE自动化。一切都按照我的意愿运作,直到我遇到这个问题。 Enter item no in a input text filed, and then click on link 'RUN Report' to get the report.

问题:点击“运行报告”后,报告未被提取到我在文本字段中输入的项目编号。但是数据库中所有项目的报告。

可能的原因: 链接中有一个onclick函数,我不确定当" IE.Doucument.getElementById(runReportID)时是否调用此函数。单击"被执行。我也试过" IE.Document.getElementById(runReportID).FireEvent(" onclick")"和#34; IE.Document.parentWindow.execScript("返回ValidateDate();"," JavaScript")",不幸的是,他们没有工作。

我不知道如何将我在文本字段中输入的值传递给"运行报告"单击按钮。该文本中是否有事件可以完成这项工作?

链接'运行报告'的HTML代码和文本字段:

<A onclick="return ValidateDate();" id=spsCtrlDefault_ctl02_lbtn_run_qry_rpt title="Click to run report" style="CURSOR: hand; TEXT-DECORATION: none; HEIGHT: 14px; FONT-FAMILY: ariel; FONT-WEIGHT: bold; COLOR: #0033ff" href="javascript:__doPostBack('spsCtrlDefault$ctl02$lbtn_run_qry_rpt','')">[ Run Report ]</A>
<input id="spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code" name="spsCtrlDefault$ctl02$gvQueryColumns$ctl02$txtItem_Code" size="20" class="riTextBox riEnabled" type="text" req_ind="N" tbl_idn="2" value="947519" controltype="text" datatype="varchar" col_idn="1" dbfld="item_revision.item_cde" style="text-transform: uppercase;">
<input id="spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code_ClientState" name="spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code_ClientState" type="hidden" autocomplete="off" value="{&quot;enabled&quot;:true,&quot;emptyMessage&quot;:&quot;&quot;,&quot;validationText&quot;:&quot;TESTVALUE&quot;,&quot;valueAsString&quot;:&quot;TESTVALUE&quot;}">

链接点击的VBA代码:

IE.Document.getElementById(runReportID).Click

1 个答案:

答案 0 :(得分:1)

我终于明白了!!!

那里有一个隐藏的文本输入元素来捕获我在文本字段中输入的值。每次文本字段失去焦点时,文本字段中的值将被发送到下面的隐藏输入元素。

<input id="spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code_ClientState" name="spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code_ClientState" type="hidden" autocomplete="off" value="{&quot;enabled&quot;:true,&quot;emptyMessage&quot;:&quot;&quot;,&quot;validationText&quot;:&quot;TESTVALUE&quot;,&quot;valueAsString&quot;:&quot;TESTVALUE&quot;}">

用于将值发送到隐藏输入元素的VB代码:

queryID = "spsCtrlDefault_ctl02_gvQueryColumns_ctl02_txtItem_Code"
IE.Document.getElementById(queryID).FireEvent ("onblur")