VBAでIE(Internet Explorer)を操作する~開いているIEウィンドウの数を調べる~

スポンサーリンク

ExcelやOutlookで使えるVBAでInternet Explorerを操作する方法をまとめます。
今回は、VBAを使って、現在Internet Explorerで開いているウィンドウの数を調べます。これを応用すれば、新しいタブでウィンドウが開かれたことを検知することができます。

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

ObjIEクラスの例


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

Function GetNowWinCount() As Integer

Function GetNowWinCount() as integer
  Dim ObjShell As Object
  Dim i As Integer
  Set ObjShell = CreateObject("Shell.Application")
  Set Objshells = ObjShell.Windows

  i = 0
  For Each ObjWindow In ObjShell.Windows
    If TypeName(ObjWindow.Document) = "HTMLDocument" Then
       i = i + 1
    End If
  Next
  GetWinCount = i

End Function

GetNowWinCount()の使い方説明


Functionとすることで、呼び出しもとに現在開いているIEのウィンドウ数を返す。イメージとしては、呼び出し元の関数から以下のように呼び出す。

Public sub main()
  dim atai as integer
  atai = GetNowWinCount
  msgbox ( "ウィンドウの数は" & atai )
End sub

GetNowWinCount()の仕組み説明


ObjShell.WindowsでPC上で開いているShellオブジェクトを取得する。
取得したShellオブジェクトの種類をひとつづつ確認し、中身がInternet Explorer(HTMLドキュメント)であった場合、カウントをする。

Function関数なので、呼び出しもとに値を返すことに注意して使うこと。ちなみにInternet Explorer以外にも、shellオブジェクトとしてカウントできるものはいくつかある。


カテゴリーVBA

コメントを残す