VBAでIE(Internet Explorer)を操作する~応用操作編(フレームを利用したWebページの操作)~

スポンサーリンク

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))

コメントを残す