VBAでIE(Internet Explorer)を操作する~基本操作編~

スポンサーリンク

ExcelやOutlookで使えるVBAでInternet Explorerを操作する方法をまとめます。
二回目の今回は、開いたインターネットブラウザのボタンや、チェックボックスを操作するところまで。

  • VBAでIE(Internet Explorer)を立ち上げる方法はコチラ
  • VBAで開いたIE(Internet Explorer)でボタンやチェックボックスの操作をするのはコチラ
  • 現在パソコンで開いているIE(Internet Explorer)のウィンドウの数を調べる方法はコチラ

ObjIEクラスの例


まずはサンプル。以下のコードを、こちらで作成したObjIEの下方にコピペして使っていくとよい。


Public Sub ClickLink1(Str01 As String)
    'ObjIEのなかのタグaの要素を取得する。STR01と一致した場合はクリックする。
    '頭から順に検索して最初にヒットしたものが対象。
    
    For i = 0 To ObjIE.Document.all.tags("a").Length - 1
        'Debug.Print ObjIE.Document.all.tags("a")(i).innerText
        If ObjIE.Document.all.tags("a")(i).innerText = Str01 Then
            ObjIE.Document.all.tags("a")(i).Click
            Call WaitOpenPage
            GoTo L1:
        End If
        
    Next
    MsgBox ("対象はありませんでした。")
L1:
End Sub
Public Sub CheckBox1(Str01 As String, Boo01 As Boolean)
    For i = 0 To ObjIE.Document.all.tags("input").Length - 1
        If ObjIE.Document.all.tags("input")(i).Value = Str01 Then
            ObjIE.Document.all.tags("input")(i).Selected = True
            Call WaitOpenPage
            GoTo L11:
        End If
        
    Next
    MsgBox ("対象はありませんでした。")
L11:
End Sub
Public Sub ClickButton1(Str01 As String)
   'ボタンのIDを検索して該当するボタンをクリックする。
    ObjIE.Document.getElementById(Str01).Click
    Call WaitOpenPage
End Sub
Public Sub ClickButton2(Str01 As String)
    'ボタンの表示名を指定してボタンを押す。
    For Each Obj01 In ObjIE.Document.all.tags("input")
        If Obj01.Value = Str01 Then
            Obj01.Click
            Call WaitOpenPage
            GoTo L6:
        End If
    Next
    MsgBox ("指定のボタンはありませんでした。")
L6:
End Sub
Public Sub EnterText(Str01 As String, Str02 As String)
   ’テキストボックスのName属性で検索して文字列を入力する。
    For Each Obj01 In ObjIE.Document.all.tags("input")
        If Obj01.Name = Str01 Then
            Obj01.Value = Str02
            GoTo L9:
        End If
    Next
    MsgBox ("対象のフィールドはありません")
L9:
End Sub

ボタンのクリックの仕方( ClickButton1 )


引数Str01 →押下したいボタンのID属性を指定する。
すると、getElementById関数で、要素を取得。クリックをする。
なお、ボタン押下後は、ページ遷移が発生するので、ページの読み込みが完了するまで待機させる。WaitOpenPage関数を使っているが、詳しくはコチラ

ボタンのクリックの仕方( ClickButton2 )


引数Str01 →押下したいボタンのName属性を指定する。
WEBページ上のタグ<input>をすべて抽出し、そこからStr01をValue(ボタンに表示されるテキスト)値として持つボタンを見つけて、クリックする。

文字列の入力の仕方( EnterText )


引数Str01 →入力したいテキストボックスのName属性。
引数Str02 →入力したい文字列。
WEBページ上のタグをすべて抽出し、そこからStr01をName属性に持つものを取得する。そのうえで、Str02を入力させる。

チェックボックスのチェックの仕方( CheckBox1 )


引数Str01 →チェックしたいチェックボックスの表示文字列。
引数Boo01 →True(チェックする)またはFalse(チェックしない)。
WEBページ上のタグ<input>をすべて抽出し、そこからStr01を文字列として持つチェックボックスを取得する。そのうえで、Boo01に従いチェックする/しない。。

各種問題への対処法


症状:クリックできない、チェックできない、文字列を入力できない。

  • WebElementを適切に取得できていない可能性がある。getElementにはID,Name,ClassName,TagNameなどあるが、自分が適用したいウェブサイトに合わせて組み合わせるとよい。
  • 処理対象のWebページがFrameをつかっている場合、Frameを適切に指定しないと処理できない。Frameを使う場合の処理サンプルはこちら。

症状:getElementByTagNameが使えない。

getElementByTagNameはIE8以上でないと使えないらしい。
「ドキュメントモードが8以下では使えない」ともいうらしいが、詳しくはググるとよい。

ただし、getElementByTagNameが使えなくとも、ObjIE.document.all.tags(“タグ名称”)ですべてのタグ要素が取得できるため、困らない。。。?個人的には要勉強。

カテゴリーVBA

コメントを残す