【お手軽カンタン自動化!エクセルVBA × Google Chromeで身代わりロボットを作る方法】
みなさんこんにちは。taka.(@teihen_escape)です。
今回ご紹介するのは、以前記事にしたこちら↓
VBAでIEを操作するというやつのGoogle Chromeバージョンですね。
IEで操作できるんだから別にもそれでいいじゃん、って思う方もいるかと思うんですが、これにはちゃんと理由がありまして、それは「IEではもう表示すらされないサイトが結構ある」ということ。
ご存じの方も多いと思いますが、IEというのはもう今後バージョンアップされることはなく、それどころか既存の最新バージョンである11ですら数年後にサポートが終了してしまうことが既に決定しているんですね。
そのため、多くのサイトで今後もうIEでの表示をさせないという判断が当たり前になりつつあります。モダンブラウザに加え、IEでもちゃんと正常にサイトを表示させるためには、別でコストも結構かかりますし。
代表的な例として、かのツイッターでも2020年6月からIEでの表示をさせなくなっているというのは有名な話です。
というわけで、以上の理由から最近注目されているのが「IEの代わりにChromeを使ってWebページを操作する手法」というわけなんですね。もちろんまだIEで表示されるサイトに関してはIEを使って問題ないですし、両方を適宜使い分けて行くのが当面は正解という形かとは思います。
それでは、早速行ってみましょう!
【1】Selenium Basicのインストール
例によってまずは環境構築からです。VBAでChromeを操作するために必要なSelenium Basicというものをインストールします。
1、以下URLへアクセス
http://florentbr.github.io/SeleniumBasic/
2、Release pageをクリック
3、SeleniumBasic-2.0.9.0.exe (※2020年6月時点のバージョン)をダウンロード
4、インストーラーの実行
インストーラーを実行したら、指示通り「Next >」を押しつつ進んで行き、
最後のダイアログのチェックは外して(Firefoxのアドオンは不要なので)、「Finish」を押して、完了。
【2】Selenium Basicを最新版のChromeに対応させる
Selenum Basicの中にあらかじめ入っているChromeを制御するドライバは最新版Chromeに対応していないので、別で最新版をダウンロードし手動で上書く必要があります。
1、以下URLへアクセス
https://sites.google.com/a/chromium.org/chromedriver/
2、最新版をダウンロード
3、zipを解答し、chromedriver.exeを見つける
4、Selenium Basicをインストールしたフォルダに上書き
どこだったか不明の場合は、フォルダのアドレスバーのところに以下のテキストをコピペすれば大丈夫です。
%LOCALAPPDATA%\SeleniumBasic
【3】VBEでの参照設定
IEの時と同様、VBEで参照設定をします。
1、「Alt + F11」でVBEを開いて、ツール > 参照設定 を選択
2、Selenium Type Libraryにチェックを入れる
これでVBAで操作するための準備は整いました。お疲れさまでした。
【4】ヤフーで検索してみよう
というわけで早速、お決まりのヤフー検索を題材に実際の操作をさせてみましょう。「VBA」と検索して結果ページを表示させます。
結論、コードとしては以下で、ブロックごとに分けて説明していきます。(たった9行!)
Sub ヤフー検索()
Dim Driver As New ChromeDriver
Driver.Get "https://search.yahoo.co.jp/"
Driver.FindElementByCss("#yschsp").SendKeys "VBA"
Driver.FindElementByCss("#sbn > fieldset > div.sbox_1.cf > input").Click
Stop
Driver.Close
Set Driver = Nothing
End Sub
1、お決まりゾーン
Dim Driver As New ChromeDriver
Driver.Get "https://search.yahoo.co.jp/"
Driver.Close
Set Driver = Nothing
はい。これらはもうお決まりなので、覚えてしまいましょう。今回はヤフーに飛ぶのでURL部分がhttps://search.yahoo.co.jp/
となってますが、ここは適宜変えてください。
2、Stop
Stop '確認のため
これはなくても問題はないんですが、最初は確認のために入れておくと便利です。ブラウザを表示させたままいったん止めておけます。
3、検索窓に値を入れてクリックする部分
Driver.FindElementByCss("#yschsp").SendKeys "VBA"
Driver.FindElementByCss("#sbn > fieldset > div.sbox_1.cf > input").Click
ここがIEでの操作とは決定的に違う部分ですね。
・検索窓の場所を特定して「VBA」と値を入れる
・検索ボタンを特定してクリックする
の二つをDriver.FindElementByCssというものを使ってやっていて、
#yschsp
#sbn > fieldset > div.sbox_1.cf > input
の二つの部分がそれぞれの場所を特定するために必要な情報になります。
これらの情報の取得方法としては、前者(検索窓の方)を例にとると、
i)、まず検索窓の上にカーソルを合わせて右クリックし、その後「検証」をクリック
ii)、右側にデベロッパーツールが表示され、その中に青く色づけされたゾーンが現れるので、その上にカーソルを合わせて右クリック
iii)、「Copy」にカーソルを合わせるとその右に更にダイアログが表示されるので、「Copy selector」を選択
これでクリップボードに「#yschsp」がコピーされている状態になります。
あとは最後に、
.SendKeys "VBA"
の部分で「VBA」と値を入れる、
.Click
の部分で文字通りボタンをクリックする、
という動作をそれぞれさせて、これにて完了です。IEと違って表示待ちをさせる必要もないので、なんと10行以内のコードで終わってしまいました。お手軽すぎる!
おわりに
如何でしたでしょうか。今回はVBAでGoogle Chromeを操作する方法について紹介しました。
「身代わりロボットを作る方法とか言っといて、めちゃくちゃ基本的なことしか書いてないぞ!」というお叱りを頂きそうですが、、もう少し込み入った内容については時間があれば書きます。ごめんなさい。また、VBAを書く上での基本的なことについてはIE版の方でも書いてますので、そちらもご参照ください。
実際まだあと数年はIEだけでも何とかなる状態が続くとは思いますが、徐々に別の手法も模索していかないと実務では困る場面も多くなることが想定されるので、是非これを機会に基本的な部分はマスターしてもらえればなと思います。
それでは、今回も最後まで読んで頂きありがとうございました。
▼▼▼ こちらの記事もおすすめ ▼▼▼
この記事が気に入ったらサポートをしてみませんか?