ブログお引越ししました。
世界の切りとり方
5秒後に移動します…

VBAでIE自動化

VBAでのInternetExplorer操作・自動化について、
サンプルコードとともにまとめます。
開発・試験環境で、特別なツール無しに、ExcelVBAIE操作の自動化が可能です。
結合試験工程以降で特に効果が高いと思います。
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の取得をやろうかと思います。