見出し画像

【お手軽カンタン自動化!エクセル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をクリック

画像9

3、SeleniumBasic-2.0.9.0.exe (※2020年6月時点のバージョン)をダウンロード

画像7

4、インストーラーの実行

インストーラーを実行したら、指示通り「Next >」を押しつつ進んで行き、

画像8

最後のダイアログのチェックは外して(Firefoxのアドオンは不要なので)、「Finish」を押して、完了。

画像9

【2】Selenium Basicを最新版のChromeに対応させる

Selenum Basicの中にあらかじめ入っているChromeを制御するドライバは最新版Chromeに対応していないので、別で最新版をダウンロードし手動で上書く必要があります。

1、以下URLへアクセス
https://sites.google.com/a/chromium.org/chromedriver/

2、最新版をダウンロード

画像10

画像11

3、zipを解答し、chromedriver.exeを見つける

画像12

4、Selenium Basicをインストールしたフォルダに上書き

画像13

どこだったか不明の場合は、フォルダのアドレスバーのところに以下のテキストをコピペすれば大丈夫です。

%LOCALAPPDATA%\SeleniumBasic

【3】VBEでの参照設定

IEの時と同様、VBEで参照設定をします。

1、「Alt + F11」でVBEを開いて、ツール > 参照設定 を選択

画像4

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)、まず検索窓の上にカーソルを合わせて右クリックし、その後「検証」をクリック

画像1

ii)、右側にデベロッパーツールが表示され、その中に青く色づけされたゾーンが現れるので、その上にカーソルを合わせて右クリック

画像2

iii)、「Copy」にカーソルを合わせるとその右に更にダイアログが表示されるので、「Copy selector」を選択

画像3

これでクリップボードに「#yschsp」がコピーされている状態になります。

あとは最後に、

.SendKeys "VBA"
の部分で「VBA」と値を入れる、

.Click
の部分で文字通りボタンをクリックする、

という動作をそれぞれさせて、これにて完了です。IEと違って表示待ちをさせる必要もないので、なんと10行以内のコードで終わってしまいました。お手軽すぎる!

おわりに

如何でしたでしょうか。今回はVBAでGoogle Chromeを操作する方法について紹介しました。

「身代わりロボットを作る方法とか言っといて、めちゃくちゃ基本的なことしか書いてないぞ!」というお叱りを頂きそうですが、、もう少し込み入った内容については時間があれば書きます。ごめんなさい。また、VBAを書く上での基本的なことについてはIE版の方でも書いてますので、そちらもご参照ください。

実際まだあと数年はIEだけでも何とかなる状態が続くとは思いますが、徐々に別の手法も模索していかないと実務では困る場面も多くなることが想定されるので、是非これを機会に基本的な部分はマスターしてもらえればなと思います。

それでは、今回も最後まで読んで頂きありがとうございました。


  ▼▼▼ こちらの記事もおすすめ ▼▼▼


この記事が気に入ったらサポートをしてみませんか?