2016-03-02 100 views
1

研究员,VBA IE Onclick函数调用

我试图用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“)”和“IE.Document.parentWindow.execScript(”return 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 

回答

0

我终于想通了!

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

<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")