Excel の VBA は Windows3.1Aの時代からお手軽なシステム開発用言語として使ってる。
その当時は空間熱量のシミュレーションシステムなどという「言語選定間違ってるんじゃね?」というようなものまで作らされたりして最後はチート技まで作り出せるレベルにまでなったんだけど、VBAを使っている限りMSの呪縛からは逃れられないので今はPythonがお気に入りになっている。
そんな訳でブラウザコントロールの主な方法には、Python + Seleniumを使用している。もちろんPython(+Selenium)からExcelをコントロールする方法もあるのだが、Excelから直接Seleniumをコントロールできれば、無駄がなくメリットも多いだろう。
で調べてみると、やっぱりあるんですね。
既に詳しく書いてくれている方々がいるので参考にさせて頂きました。
ここではメモレベルの解説になるので、内容が理解できない場合はリンクを辿ってもらった方が良いかもしれない。
この記事では、速攻でExcelでブラウザ(Chrome)をコントロールできる環境にすることが目的です。
では始めます。
今回使用したソフトウェアの各バージョンは、
Windows 10 Pro 1809
Excel 2007 12.0.6787.5000
Chrome 64bit 79.0.3945.130
ChromeDriver 79.0.3945.36
SeleniumBasic v2.0.9.0
てな感じです。
SeleniumBasicをダウンロードしてインストールする。
更新が2016年で止まっているようですが、現時点でこれが最新のようですね。
ダウンロードしたらインストーラを実行します。
最新のChromeDriverをダウンロードし上書きする。
現時点で最新は、80.0.3987.16のようですが、
使用しているChromeのバージョンに合わせて、79.0.3945.36をダウンロードします。
「大抵のものは最新版を入れれば間違いない」と適当に選ぶのですが、
これはバージョンをちゃんと合わせないとうまく動かないことが多いです。
解凍しSeleniumBasicのフォルダ内にあるChromeDriver.exeに上書きします。
これはもちろんSeleniumBasicに入っているChromeDriverが古くて今使用しているChromeがコントロールできないからです。
場所は、
C:\Users\自分のユーザー名\AppData\Local\SeleniumBasic
ですね。
Excel VBA でSeleniumが使用できるように環境を整える
「開発」タブがない場合は、 「Excelのオプション」から追加します。
Excel/開発/VisualBasic でウィンドウを開き。
ツール/参照設定を開きます。
Selenium Type Library にチェックを入れます。
これでもう使えるようになっているはずです。
動くか確かめる
まるむしアンテナのタイトルを取得してみましょう。
タイトル部のXPathは、「//*[@id=”site-title”]/a」
ですが、VBAで「”」は意味があるので、「””」となります。
「//*[@id=””site-title””]/a」ってことですね。
テストコードはこんな感じです。
Sub ボタン1_Click() Dim Driver As New Selenium.WebDriver Driver.Start "chrome" Driver.Get "https://antenna.infomixer.net/" Title = Driver.FindElementByXPath("//*[@id=""site-title""]/a").Text Debug.Print (Title) End Sub
実行結果です。
Chromeが起動して、まるむしアンテナを表示し、イミディエイトウィンドに「まるむしアンテナ」の文字が出力されました。
成功です。^^
<追記> 2020.04.27
最近上記のコードではエラーになってしまうようです。
とりあえずの動作確認は、下記のコードでやってみてください。
Sub ボタン1_Click() Dim Driver As New Selenium.WebDriver Driver.Start "chrome" Driver.Get "https://antenna.infomixer.net/" Title = Driver.title Debug.Print (Title) End Sub
コメント