VBAでIE自動化
VBAでのInternetExplorer操作・自動化について、
サンプルコードとともにまとめます。
開発・試験環境で、特別なツール無しに、Excel/VBAでIE操作の自動化が可能です。
結合試験工程以降で特に効果が高いと思います。
seleniumやphantomjsなど使えないところでもExcelは使えると思うので...。
さっそくソースから。
※コピペする場合はツール→参照設定から、
「Microsoft Internet Controls」にチェックを入れてください。
'***************************************************
' メイン
Sub sampleIE1()
Dim ie as InternetExplorer
Set ie = generateIE("http://www.yahoo.co.jp/")
End Sub'IEオブジェクトを作成、URLに遷移
Private Function generateIE(url As String) As InternetExplorer
Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application") ' IEのオブジェクト作成(処理重い)
With ie
.Visible = True
.Navigate url
End With
Call waitIE(ie) ' InternetExplorerの遷移待ち
Set generateIE = ie ' 戻り値の設定(VBAメモ:参照渡しの場合は setを使用)
End Function' InternetExplorerの処理待ち
Private Function waitIE(ie As InternetExplorer)
'IEオブジェクトのBusyプロパティとReadystateプロパティを参照
Do While ie.busy Or ie.Readystate < READYSTATE_COMPLETE
DoEvents
Loop
End Function
'***************************************************
IEの処理待ちをどのように行うかは
処理対象によって調整が必要なことが多いですが、基本はこの形でやっています。
ページ遷移が発生したら、IE.BusyとIE.Readystateをチェック。
次回は起動済みIEの取得をやろうかと思います。