• 締切済み

VBA、IE操作、初心者になります

webページの操作についての質問になります。 VBAでやりたいことです。 (1)webページを開き、指定したソースが表示されるまで、画面を更新 (2)ソース表示がされたら、指定したボタンをクリック (3)画面が移行する (4)移行したページの指定したボタンをクリック 不具合 (2)ボタンクリック後、ページは移行するが(4)のボタンが押せません。 しかし(3)のページを直接指定して開いた後に(4)の動作を行うときちんとボタンクリックが出来ます。 順番に(1)→(2)→(3)→(4)と処理を行うと(4)のボタンが押せないという状況です。 こんな感じで作成しました。 Dim objIE As InternetExplorer ' Set objIE = CreateObject("Internetexplorer.Application") objIE.Visible = True Dim strUrl As String strUrl = "●●●●●●?sc_i=shp_pc_top_mdItemRanking_01" objIE.navigate strUrl Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE Loop (1)の処理 Do While (True) If (TypeName(objIE.document.getElementsByClassName("●●●●")(0)) <> "Empty") Then Set tmp = objIE.document.getElementsByClassName("●●●●") flag = False For Each t In tmp If (InStr(t.getAttribute("class"), "●●●●") > 0) Then t.Click flag = True Exit For End If Next End If If (flag = True) Then Exit Do Application.Wait [Now() + "0:00:00.5"] objIE.Refresh Do Loop Until (objIE.Busy = False) And (objIE.readyState = 4) Loop (3)の画面移行 (4)の処理 Set objINPUT = objIE.document.getElementsByTagName("INPUT")  For n = 0 To objINPUT.Length - 1 If InStr(objINPUT(n).Value, "●●●●") > 0 Then objINPUT(n).Click Exit For End If Next Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE Loop Set objINPUT = Nothing 以上になります。 お手数ですが、どなたかご教示をお願いいたします。

みんなの回答

回答No.1

t.Click の画面遷移が完了する前に、(4)の処理を始めているのではないですか。

m53up
質問者

お礼

ご回答して頂き誠にありがとうございます。やはり画面遷移が完了する前4の処理をしてしてしまっているのですね。お手数ですが、画面遷移してから4の処理を行うにはどの様にしたら良いのでしょうか? ご指導していただけたら幸いです。