XXXXXさんへ Aタグ リンクの文字を探して押す - ken3memo (三流君)
の 続きで
ダメでした、、と連絡をいただく(涙)
>幾度と申し訳ございません。
>
> For Each objA In objIE.document.all.tags("A") 'Aのタグを.allから抜く
> MsgBox "確認用" & objA.innerText '確認できたら消す
> If objA.innerText = "送る" Then '.InnerTEXT値(リンクの名称) で判断する
> objA.Click '見つけたButtonオブジェクト(ボタン)を.Clickクリックする
> Exit For '用が済んだので(見つかったので)ループを抜ける
> End If
> Next
>
>こちらを記述し、行った場合に、送信される場合と送信されない場合がございました。
>何が原因なのでしょうか?
対策 案 処理待ちを入れてみては?
送信される場合と送信されない場合、
一番イヤなパターンですね。
処理が速くて、
objIE.document.all.tags("A")
で、取りこぼしているのかなぁ?
あまり、お勧めすると、
潔癖症のプログラマーさん達に怒られるけど、
データセットの後、
DoEventを入れたり、
Excelなら、Application.Wait (Now + TimeValue("0:00:01"))
とかで、待ってみるとか、、、
'データをセットする objIE.Document.all("username").Value = Range("B2") DoEvents '1秒待ち Application.Wait (Now + TimeValue("0:00:01")) objIE.Document.all("password").Value = Range("B3") DoEvents '1秒待ち Application.Wait (Now + TimeValue("0:00:01")) 'リンクを探して押す strFLG = "noClick" DoEvents '1秒待ち Application.Wait (Now + TimeValue("0:00:01")) Set objINPUT = objIE.Document.all.tags("INPUT") 'INPUTのタグを集める For i = 0 To objINPUT.Length - 1
↑私の使っているサンプルなので、前回と違いますが、待ちながら実行させていたりします。
まぁ、潔癖症じゃなくて、時間に余裕のあるシステムなら、
DoEvents '1秒待ち
と
時刻待ち
http://d.hatena.ne.jp/ken3memo/20120219/1329603012
Dim time10 As Date
time10 = DateAdd("s", 3, Now) '3秒待ち、三秒後を計算、
While Now < time10 '現在時刻が上↑の三秒後以下の間まわる。
DoEvents '嫌いな人多いけど、
Wend
を入れて、テストしてみてください。
それでも、不安定な時は、、、う〜ん・・
何か原因があるのかなぁ?
※自動操作、ロボット除けで、登録側が連続処理で何かしていることは考えにくいしなぁ・・・
解決の糸口となれば、幸いです。 三流プログラマー Ken3