発生している問題・エラーメッセージ
VBAでIE上のHPのボタンがクリックできない
問題
エラーは出ないが、クリックもできていない
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
Sub MySub()
Dim objIE As InternetExplorer
Dim objTag As Object
Dim win As Object Dim winshell As Object Set winshell = CreateObject("Shell.Application")
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True objIE.navigate "https://SSSSSSSSSSSSSSSSSSSSSSSS" '管理画面ページのURLを指定 '■シェルオブジェクトを使用し、IEを再度掴みなおす。 For Each win In winshell.Windows If win.Name = "Internet Explorer" Then Set objIE = win Exit For End If Next '■IE読み込み表示待ち Do While objIE.Busy = True DoEvents Loop Do While objIE.readyState <> READYSTATE_COMPLETE DoEvents Loop
'開始(submit)をクリック
For Each objTag In objIE.document.getElementsByClassName("btn btn-big btn-primary")
If InStr(objTag.outerHTML, "開始") > 0 Then '送信ボタンクリック objTag.Click 'IEが完全表示されるまで待機 Call ieCheck(objIE) 'ループ脱出 Exit For End If
Next
End Sub
Sub ieCheck(objIE As InternetExplorer)
Dim timeOut As Date
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
timeOut = Now + TimeSerial(0, 0, 20)
Do While objIE.document.readyState <> "complete"
DoEvents
Sleep 1
If Now > timeOut Then
objIE.Refresh
timeOut = Now + TimeSerial(0, 0, 20)
End If
Loop
End Sub
以下の、質問のエラーは回避できたので、上記に
新しい問題を記載します。以下は読み飛ばしてください。
該当のソースコード
ソースコード
Sub MySub()
Dim objIE As InternetExplorer
Dim objTag As Object
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True objIE.Navigate "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" '管理画面ページのURLを指定
'始業(submit)をクリック
For Each objTag In objIE.document.getElementsByClassName("btn btn-big btn-primary") →ここでエラーが発生する
If InStr(objTag.outerHTML, "開始") > 0 Then '送信ボタンクリック objTag.Click 'IEが完全表示されるまで待機 Call ieCheck(objIE) 'ループ脱出 Exit For End If
Next
End Sub
エラーが発生する理由は、引用しているソースコードがおかしいからでしょうか?