2016-07-13 5 views
0

ウェブサイトとやり取りしてフォームに自動的に入力するためのvbaプログラムを作成しています。他の種類のリンクを使用していますが、フォームの隠れた部分を展開するリンクがいくつかあります。以下のコードを使用する場合、これらは動作しません。私はこれを行う方法があるかどうかを知る必要があります。html onClickイベントはvbaで発生しません

For j = 0 To objCollectionA.Length - 1 
    If objCollectionA(j).Name = "diForm:addProductSizeLnk" Then 
     objCollectionA(j).FireEvent ("onclick") 
    End If 
Next 

任意の提案:私が正しくリンクを参照しているし、次のコードを使用してい

<a name="diForm:addProductSizeLnk" id="diForm:addProductSizeLnk" style="float: right;" 
 
onclick="jsf.util.chain(document.getElementById('diForm:addProductSizeLnk'), 
 
event,'jsf.ajax.request(\'diForm:addProductSizeLnk\',event,{execute:\'@none \', 
 
render:\'@none \',onevent:function(data){showEditor(data,\'diForm:productSizeEditor\', 
 
\'diForm:productSizeAddDiv\', false ? \'diForm:in_clinicallyRelSizeText\' : 
 
\'diForm:in_clinRelSizeType\')},\'javax.faces.behavior.event\':\'action\'})'); 
 
return false;" href="#">

:ここ

は、HTMLソースコードのですか?

+0

アマゾンサイトでは、イベントを呼び出すほど簡単ではありません。コントロールの親フォームを探し、すべての入力がそのフォームを送信した後。 – cyboashu

+0

'objCollectionA'変数の初期化を含め、VBAコード全体を投稿してください。 'oIE.document.getElementById(" diForm:addProductSizeLnk ")を試したことがありますか?要素が準備完了するまで待つことを忘れないでください。また、クリックをシミュレートするには、マウスイベントオブジェクト 'Set oMouseEvt = oIE.document.createEvent(" MouseEvents ")'を作成し、 'oMouseEvt.initMouseEvent"をクリックして初期化します。 "、True、True、.document.parentWindow、0,1、 False、True、False、0、 ""を返し、それをターゲット要素 'oIE.document.getElementById(" diForm:addProductSizeLnk ")。dispatchEvent oMouseEvt'にディスパッチします。 – omegastripes

答えて

0

ご意見ありがとうございましたomegastripes私はDo While IE.Busy Application.Wait DateAdd("s", 1, Now) Loopと.readyState関数を使って待っていると思った。私は、objCollectionA(j).FireEvent ("onclick")が効力を発する前に、プログラムが完了していることに気づいた。だから私はコードをゆっくりと歩み、それは働いた。今私はApplication.Wait DateAdd("s", t, Now)を使用して数秒間プログラムを一時停止します。 While-Wendを使用してコレクションから呼び出す代わりに、IE.document.getElementById("diForm:addProductSizeLnk").clickを使用してコードを少し掃除しています。おそらくあなたが話すことができるように、これはまだかなり新しくなっています。

要素が準備完了するまでお待ちください。

関連する問題