IEを起動する方法は2通り
InternetExplorer(IE)をVBAで起動するコードは主に以下の2種類あります。
以下に2つのIEを起動するコードとメリットデメリットを記載します。
①Shell関数を用いる方法
こちらは手軽に起動できますが、起動するためだけのコードになります。
続けて開いているIEのページに対して操作を行うには、どのウインドウを操作対象とするかを設定する操作をしなければなりません。
起動したいだけなら便利です。
Shell “C:\Program Files\Internet Explorer\iexplore.exe http://www.yahoo.co.jp/”, vbNormalFocus
End Sub
②CreateObjectを使ってオブジェクトを作成する方法
CreateObjectを使ってIEオブジェクトを作成して操作する方法です。起動するまでのコードはShell関数を使うよりも長いですが、そのまま続けて他の操作や処理を行うことができます。
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として指定する操作になります。
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のタブの切り替えに関する機能はついていないので、その点は注意が必要です。
おすすめ書籍 (広告)
Amazon 楽天 Yahoo検索 |
---|
Amazon 価格:¥1,603円 |
bookfan 1号店 楽天市場店 価格:2,530円 |
bookfan 1号店 楽天市場店 価格:2,530円 |
bookfanプレミアム 価格:2,530円 |
VALUE BOOKS Yahoo!店 価格:413円 |
コメント