InternetExplorerを起動するコードと起動しているIEのウィンドウを取得するコード

スポンサーリンク

IEを起動する方法は2通り

InternetExplorer(IE)をVBAで起動するコードは主に以下の2種類あります。
以下に2つのIEを起動するコードとメリットデメリットを記載します。

①Shell関数を用いる方法

こちらは手軽に起動できますが、起動するためだけのコードになります。
続けて開いているIEのページに対して操作を行うには、どのウインドウを操作対象とするかを設定する操作をしなければなりません。
起動したいだけなら便利です。

Sub YahooJapan開く1()
Shell “C:\Program Files\Internet Explorer\iexplore.exe http://www.yahoo.co.jp/”, vbNormalFocus
End Sub

②CreateObjectを使ってオブジェクトを作成する方法

CreateObjectを使ってIEオブジェクトを作成して操作する方法です。起動するまでのコードはShell関数を使うよりも長いですが、そのまま続けて他の操作や処理を行うことができます。

Sub YahooJapan開く2()
Dim IE As InternetExplorer
Set IE = CreateObject(“InternetExplorer.application”)
’IEを起動して操作対象とする(変数IEに格納する)
IE.Visible = True’IEの画面を表示する
IE.navigate (“http://www.yahoo.co.jp/”)’目的のサイトに移動する
End Sub

以上の2つの方法を状況によって使い分けて使用します。

開いているIEのページを取得する方法

起動しているIEのページを取得して、操作できるようにするための手順は少し複雑です。開いているウィンドウに対して、①HTMLであるものを選び、かつ②表示されているページのタイトルの一部が一致しているものをobjIEとして指定する操作になります。

Sub YahooJapan開いているウインドウを取得する()
Dim colSh As Object
Dim win As Object
Dim objIE As InternetExplorer
Set colSh = CreateObject(“Shell.Application”)
For Each win In colSh.Windows
’開いているすべてのウインドウに対して処理する
If TypeName(win.document) = “HTMLDocument” Then
’開いているファイルの種類がHTMLなら処理を実行する
If InStr(win.document.Title, “Yahoo”) > 0 Then
’開いているファイルの「タイトル」にYahooが含まれているなら
Set objIE = win
’このウインドウをobjIEとして指定する
Exit For
’処理を中断してFor~Nextを終了する
End If
End If
Next
If objIE Is Nothing Then’ウインドウが見つからなければ
MsgBox “入力するページが見つかりません”’メッセージを表示して
Exit Sub’処理を終了する
End If
End Sub

この処理を行うことで、複数ページを別のウインドウで開いていても指定のウィンドウに対してのみ処理をすることができます。
また、Shellで起動したウィンドウに対しても操作したり、自分で開いたページに対しても文字を入力したり、クリックしたりする操作ができるようになります。

今回は取得するウィンドウを「If InStr(win.document.Title, “Yahoo”) > 0 Then」としましたが、他の条件で選択することもできます。
例えばURLがわかっているなら「If win.document.URL = “http://www.yahoo.co.jp/” Then」のようにURLで認識させることができます。
(ただし、URLで指定するなら起動のときから設定しておいた方が楽ですが)

今回紹介するVBAコードにはIEのタブの切り替えに関する機能はついていないので、その点は注意が必要です。

おすすめ書籍 (広告)

コメント