ExcelやOutlookで使えるVBAでInternet Explorerを操作する方法をまとめます。
初回は、VBAを使ってインターネットブラウザを開くところまで。ブラウザのボタンをクリックしたり、チェックボックスをオンにしたりするのは次回。
- VBAでIE(Internet Explorer)を立ち上げる方法はコチラ。
- VBAで開いたIE(Internet Explorer)でボタンやチェックボックスの操作をするのはコチラ。
- 現在パソコンで開いているIE(Internet Explorer)のウィンドウの数を調べる方法はコチラ。
ObjIEクラスの例
例によって専用クラスを作っておくことで、複数プロジェクトで流用ができる。以下のコードを、新規作成したクラスにコピペして使っていくとよい。
'ie操作用class
'参照設定:Microsoft Internet Controls,Microsoft HTML Object Library
Public ObjIE As InternetExplorer
Public Sub Initialize(Boo01 As Boolean)
'Boo01 = True 'Visible
' Falese UnVisible
Set ObjIE = New InternetExplorer
ObjIE.Visible = Boo01
End Sub
Public Sub OpenPage(Str01 As String)
ObjIE.Navigate Str01
End Sub
Public Sub WaitOpenPage()
Do While ObjIE.Busy = True Or ObjIE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
End Sub
Public Sub CloseIE()
ObjIE.Quit
Set ObjIE = Nothing
End Sub
ObjIEクラスの呼び出し方
以下のコードをモジュールなどにコピペするとよいです。
Public Sub main()
Set ObjIE01 = New ObjIE
ObjIE01.Initialize (True)
ObjIE01.OpenPage ("https://google.com")
Call ObjIE01.WaitOpenPage
※スクレイピングなどでやりたい処理を書く
Stop
ObjIE01.CloseIE
End Sub
ObjIEクラスの使い方
参照設定について
「Microsoft Internet Controls」と「Microsoft HTML Object Library」の二つを参照設定するとよい。
ObjIE.Navigate “http:\\XXX”
“http:\\XXX”にアクセスする。
ObjIE.Visible =True/False
IEのブラウザを表示する/非表示にする。
デフォルトはFalseなので、画面表示したい場合はTrueを指定する。
ObjIE.Quit
開いたブラウザを閉じる。
これをやらないとブラウザが残り続けるので注意。特にVisibleがFalseのときは、バックグラウンドで動き続けてしまうための処理が重くなることがある。
WaitOpenPage(ページの読み込みが完了するまで待つ)
新しくURLを指定してページを開いたとき、ボタンやリンクを押下してページが遷移した時など、様々なタイミングでウェブページの読み込みが行われます。しかし、読み込み中はブラウザの操作をすると、うまく処理が進まないことが多いです。
そこで、適切にウェブページが読み込み終わるまで待ったほうが良いです。そのためにWaitOpenPage関数を置いています。
処理としてはとても簡単で、 ObjIE.Busy =true または ObjIE.ReadyState がCOMPLETE以外の場合は、次に進まない、という処理で実現しています。
各種問題への対処法
症状:ブラウザが立ち上がらない
Set ObjIE = New InternetExplorer を実行した時点で、ウェブブラウザが立ち上がっているはずなので、ObjIE.VisibleがTrueになっていること/Trueにし忘れていないかを確認する 。
症状:ブラウザが操作できない。
VBAにより、ブラウザが立ち上がるが操作ができない場合、適切にInternet Explorerが立ち上がっているかを確認すること。
パソコンによってはEdgeが開いてしまう設定になっており、VBAから操作ができないEdgeが立ち上がっていることがある。
対処法として、次の手順を実施する。
- Edgeを開く
- ブラウザ右上の「・・・」を押下、さらに「設定」を押下する。
- 「既定のブラウザー」を押下する。
- 「Internet Explorer に Microsoft Edge でサイトを開かせる」の設定で「なし」を選択する。
本手順ではEdgeで開くはずのブラウザをIEに変更するということをしている。そもそもEdgeが開くようになっているのは、セキュリティの都合などもあるため本手順ではなんらか不具合や不都合が発生する可能性もあるためそれを理解したうえで自己責任で実施すること。