スポンサーリンク
ExcelやOutlookで使えるVBAでInternet Explorerを操作する方法をまとめます。
4回目の今回は、応用で、操作したい対象のウェブページがFrameを使っている場合を想定した処理を使います。Frameを利用したページを操作するには、getElementをする前にFrame名を指定してあげる必要があります。
- VBAでIE(Internet Explorer)を立ち上げる方法はコチラ。
- VBAで開いたIE(Internet Explorer)でボタンやチェックボックスの操作をするのはコチラ。
- 現在パソコンで開いているIE(Internet Explorer)のウィンドウの数を調べる方法はコチラ。
ObjIEクラスの例
まずはサンプル。以下のコードを、こちらで作成したObjIEの中にコピペして使うとよい。
Public Sub ButtonWithFrame(Str01 As String, Str02 As String, Str03 As String)
Dim Obj01 As Object
For Each Obj01 In ObjIE.Document.frames(CStr(Str01)).Document.all.tags(CStr(Str02))
If Obj01.innerText = Str03 Then
Obj01.Click
Call WaitOpenPage
GoTo L54:
End If
Next
MsgBox ("該当のボタンはありません。")
L54:
End Sub
ButtonWithFrameの使い方
Str01 →操作したいFrameの名称を指定。
Str02→操作したい要素のタグを指定。
Str03→操作したい要素を特定するための文字列を指定。
イメージとしては次のような感じにしてつかう。
ObjIE.Document.frames(“Framename”).Document.all.tags(“a”)
FrameNameというフレームの中から、“a”タグの要素を取得しています。
str03はリンク文字列や、コマンドボタンの文字列などを指定して、要素を一位に特定していけば良い。こちらを参照。
各種問題への対処法
症状:要素を適切によみこめない
各種引数を変数で渡している場合、適切にStr型で読み込めていない可能性がある。その場合はstr型を明示してあげること。具体的には以下の通り。これはバグ?w
ObjIE.Document.frames(CStr(Str01)).Document.all.tags(CStr(Str02))