読者です 読者をやめる 読者になる 読者になる

三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



XXXXXさんへ IE操作で DoEventを入れたり処理待ちを入れてみては?

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