読者です 読者をやめる 読者になる 読者になる

ExcelVBAでブラウザを制御

ExcelVBAでネット情報を効率よく収集するため、買ったまま放置してた本書を引っ張り出しました。ただし本書はInternetExplorerの制御に特化しているため、Chrome制御できる方法ないか探したところ、いいもの見つけました。

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

本書はExcelVBAでInternetExplorer(以下、IE)を操作することで、様々なデータ収集を行う方法が書かれたもの。準備は、参照設定で「Microsoft Internet Controls」をチェックするだけ。
f:id:Hanamaru:20160403193539j:plain

IEを起動して「VBA」でgoogle検索するだけなら、以下のコードで可能です。既に起動したIEを探すのは、ややこしいコードが必要。

Sub ieTest()
    Dim ie As InternetExplorer
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "https://www.google.co.jp/#q=VBA"
End Sub

ただ、普段IEは使ってなく、今回のコードテストで久々に起動したくらい。できることならChromeを操作したい。いい方法ないかと探したら、ありました。Selenium VBAというものをインストールすれば、かなり簡単に使えるよう。しかも、Firefoxなど他のブラウザも使えるっぽい。早速インストールすることに。
Selenium VBA: ブラウザをVBAから自動操作するだた1つの冴えた方法 - ClockAhead 開発Blog

Seleinum の公式サイト(Downloadsのページ)よりダウンロード。最新バージョンでも更新が2年以上前なのが気になるが・・
f:id:Hanamaru:20160403194604j:plain

ダウンロードファイルを実行すると、Wizardが起動。そのまま進みます。
f:id:Hanamaru:20160403194708j:plain

お約束の同意やフォルダ選択などは、そのまま進みます。
f:id:Hanamaru:20160403194755j:plain

インストール終了後に以下のメッセージが。Firefoxは入ってないので・・
f:id:Hanamaru:20160403194844j:plain

その後ExcelVBE起動し、参照設定をすれば準備完了。
f:id:Hanamaru:20160403194943j:plain

以下のコードで、一応動くのですが・・・

Sub ieTest()
  Dim sel As New SeleniumWrapper.WebDriver
  sel.Start "Chrome", "https://www.google.co.jp/#q=VBA"
  sel.get ("/")
End Sub

こんなメッセージが出てくるのが気になります。
f:id:Hanamaru:20160403195256j:plain

挙動で気になる部分はありますが、Chromeが操作できるほうがありがたいので、いろいろ試してみたいと思います。