食っちゃ寝システムができるまで

「食っちゃ寝システム」ができるまでの、棚卸&備忘録です。

VBA使用頻度の高いコード(17):インターネットエクスプローラー上で開いているページのボタンをクリックする

f:id:taikobox:20181209173448p:plain

インターネットエクスプローラー上で開いているページのボタンをクリックする

開いているインターネットエクスプローラーが指定されたページからページ上のボタンをクリックして別ページに移るプログラム。


===============================

 Sub 別ページ移動ボタンクリック()


Dim shl As Object 'シェルオブジェクト生成
Dim htmlDoc As HTMLDocument
Dim win As Object, getFlag, txtFlag, Tage As Boolean
Dim targetTitle As String 'タイトル確認
Dim objTag As Object '指定ボタン押す
Dim objLink As Object '指定リンクを押す

Set shl = CreateObject("Shell.Application")
targetTitle = "対象ページタイトル"

For Each win In shl.Windows '起動中のウィンドウを順番確認

'IEエクスプローラがシェルで取得されるため、IEのみ処理
If TypeName(win.document) = "HTMLDocument" Then
If win.document.Title = targetTitle Then

Dim objIE As New InternetExplorer
Set objIE = win

getFlag = True '正しく取得できた
Exit For
End If
End If

Next

If getFlag = False Then
MsgBox "目的のWebページが開かれていません。⇒IE開きます", vbExclamation
Call IEOpen
Exit Sub
End If

'ページチェック
'HTMLタグがh2要素内の文言を判定し、対象のページか移動先でないこと判断する
For i = 0 To objIE.document.getElementsByTagName("h2").Length - 1

If (objIE.document.getElementsByTagName("h2")(i).innerText = "ページチェック用文字列") Then
txtFlag = True
Exit For
End If

Next i

'移動先のページでないこと確認

If (txtFlag = False ) Then
'送信(submit)をクリック
For Each objTag In objIE.document.getElementsByTagName("input")

If InStr(objTag.outerHTML, "対象ボタンの文字列") > 0 Then

'送信ボタンクリック
objTag.Click
'ループ脱出⇒タイミングよってはログアウトしているときがあるので一度確認必要
Tage = True
Exit Sub
End If
Next

ElseIf (txtFlag = True) Then
C54Tage = True
Else
'オブジェクト開放
Set shl = Nothing
Set win = Nothing
Set htmlDoc = Nothing
Unload OPreport_Check
End If

 

 

'オブジェクト開放
Set shl = Nothing
Set win = Nothing
Set htmlDoc = Nothing

 

End Sub

===============================