2016-03-02 104 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")