- ソフトがインストールできないのでSelenumBasicが使えない
- TinySeleniumVBAではメソッドが足りない
- TinySeleniumVBA,SeleniumBasicとかって何?
そういった方向けに今回SeleniumVBAの導入方法についてわかりやすく説明します。
初めての方でも躓かないように図を多くいれていますので安心して読んでいってください。
2022年9月にSeleniumVBAはアドイン化されました。その為その導入方法は以下2通りとなります。
- アドインからインストールする
- 参照設定からインストールする
アドインからのインストール方法は@yajuさんが詳しく説明してくださっていますのでこちらをご参考ください。
今回はアドインって何?、アドインまではいらないという方向けに参照設定からの導入方法について説明します。
SeleniumVBAについて
SeleniumVBAはTinySeleniumVBAを修正・拡張したものです。
SeleniumBasicのようにソフトをインストールする必要がなく、ChormeDriverのみでの自動化が可能になっています。
@GCuser99さんによって作成されています。
今回は参照設定から導入する方法について説明します。
seleniumVBA.xlamの入手
SeleniumVBAのアドインを入手するには以下の手順で行います。
1 Githubにアクセスする
2 ページ中盤のSetupのところにある「SeleniumVBA.xlam」をクリックする
2 「Download」をクリックする
3 解凍し、保管したいフォルダに置く
4 SeleniumVBA.xlamファイルを右クリックし、プロパティをクリックする。
セキュリティの部分について「許可する」のチェックボックスをいれる(環境によっては入れなくてもOKですが、入れておきます)
5 VBEの画面で、「ツール」タブ、「参照設定」をクリックする。参照設定ウィンドウで「参照(B)」をクリックする
6 先ほど入れたSeleniumVBA.xlamのフォルダを参照し、ファイルの種類を「Microsoft Excel Files(*.xlsm, *.xlam・・・)」にする。出てきた「SeleniumVBA.xlamファイル」を選択する
7 参照設定ウィンドウに「SeleniumVBA」が追加されたことを確認し、「OK」をクリックする
VBEの自身のプロジェクトに参照設定とSeleniumVBA(SeleniumVBA.xlam)が追加されていればOKです。
ChromeDriverの入手
1 Chromeブラウザを開き、右上の「3点リーダー」をクリックする。「ヘルプ」-「Google Chomeについて」をクリックする
2 現在のバージョンを確認する(図は103.5060.134となっている)
3 ChromeDriverのサイトにアクセスする
4 同じバージョンのものをクリックする(該当するものがなくても最初のバージョン(ここでは103)があっていればよいと思われる。サイト内にはマイナーチェンジのバージョンのものもある)
5 windows版(win32.zip)をダウンロードする
解凍して以下が取れていればOKです。
ChromeDriverの保存
1 先ほど入手したChromeDriverをSeleniumVBA.xlamアドインと同じ階層にいれる
次項でWebDriverの設定をしますが、パスの指定をエクセルと同じフォルダにしています。
別のフォルダでも問題ないですが、その際はパスを指定する必要があります。
WebDriverを自動更新する
SeleniumVBAにはWebDriverを自動更新する為のクラス「WebDriverManager.cls」が存在します。
これを使用するには以下のコードを最初に記載します。
Sub sample()
Dim driver As SeleniumVBA.WebDriver
Dim mngr As SeleniumVBA.WebDriverManager
Dim driverPath As String
Set driver = SeleniumVBA.New_WebDriver
Set mngr = SeleniumVBA.New_WebDriverManager
'WebDriverを自動更新するWebDriverManagerクラスを使用する
driverPath = ".\chromedriver.exe"
mngr.AlignChromeDriverWithBrowser driverPath
WebDriverManagerクラスのAlignDriverWithBrowserメソッドでChromeのバージョンとインストールしているWebDriverのバージョンを比較し、異なっていたらインストールするようにしています。
Googleで検索する際のコード
WebDriverManagerでChromeDriverのバージョンを確認をしたのちに、Googleで検索するコードは以下になります。
Sub sample()
Dim driver As SeleniumVBA.WebDriver
Dim mngr As SeleniumVBA.WebDriverManager
Dim driverPath As String
Dim keys As SeleniumVBA.WebKeyboard
Dim keySeq As String
Set driver = SeleniumVBA.New_WebDriver
Set keys = SeleniumVBA.New_WebKeyboard
Set mngr = SeleniumVBA.New_WebDriverManager
'WebDriverを自動更新するWebDriverManagerクラスを使用する
driverPath = ".\chromedriver.exe"
mngr.AlignChromeDriverWithBrowser driverPath
'Chromeを選択してブラウザを開く
driver.StartChrome
'driver.StartEdge
driver.OpenBrowser
'Googleを開く
driver.NavigateTo "https://www.google.com/"
driver.Wait 1000
'This is coolとリターンキーを入力する
keySeq = "This is COOL!" & keys.ReturnKey
driver.FindElement(by.Name, "q").SendKeys keySeq
driver.Wait 2000
End Sub
最初の数行はWebDriver更新用のコードです。
以降のコードについては次回以降で説明しますが、これでスクレイピングができるようになります。
今回のまとめ
今回はインストール不要なSeleniumVBAの導入方法について説明しました。
SeleniumVBA.xlamのインストールとChromeDriverのインストールだけで使用することができるようになっています。
次回はSeleniumVBAで実行できる操作について説明します。
ソフトのインストールは必要となりますが、SeleniumBasicはメソッドやプロパティのリファレンスがあり初心者にはわかりやすいソフトとなっています。SeleniumBasicについて勉強されたい方は以下の記事もお勧めです。
またSeleniumBasicについては以下の書籍もあります。どちらもSeleniumの使い方について詳しい説明がなされているのでお勧めです。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。
SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します
コメント
IEを使わないExcel VBAでスクレイピングの記事を探していたらこちらの記事に辿り来ました。
とてもわかりやすい記事をありがとうございます。
今から導入するならTinySeleniumVBAとSeleniumVBAどちらが良いのでしょうか。
ちょっとしたスクレイピング程度ならTinySeleniumVBAの方が動作も軽いなどありますでしょうか
コメントありがとうございます。ちょっとしたスクレイピングならTinySeleniumVBAの方が容量が少ないですしお勧めです。簡単な操作ならTinyのほうで事足ります。
よりレベルの高いことをしたくなったらSeleniumVBAでもよいと思います。
参考になる記事を投稿していただき感謝します。
seleniumVBAについて質問です。
SeleniumVBA.xlamと同じ階層にweb driverを入れなくても使用出来ますか?
また、その場合、どうやって使用するweb driverのパスを指定すればいいですか?
お忙しい中恐縮ですが、ご回答頂けましたら幸いです。
連投すみません。先ほどの質問の補足です。
オフライン環境で実行するため、web driverをインターネットから自動更新することはできません。そのため、記事に記載されている「WebDriverManager.cls」にファイルパスを記載する方法をそのまま使えないのでは、と考えています。
参考になる記事を投稿していただき感謝します。 seleniumVBAについて質問です。
SeleniumVBA.xlamと同じ階層にweb driverを入れなくても使用出来ますか? また、その場合、どうやって使用するweb driverのパスを指定すればいいですか?
補足:
オフライン環境で実行するため、web driverをインターネットから自動更新することはできません。そのため、記事に記載されている「WebDriverManager.cls」にファイルパスを記載する方法をそのまま使えないのでは、と考えています。
コメントありがとうございます。2つ質問ですね。
①web driverの入れる箇所は変更可能です。
driverPath = “.\chromedriver.exe”がChromedriver.exeのパスを示しています。「.」がエクセルマクロファイル(xlsm)と同じ階層を示しています(相対参照)。「相対参照」「相対パス」で調べてもらったら任意の場所に入れられることもわかってもらえると思います。
②自動更新しないなら以下のコードを消去していただければいいです。
mngr.AlignChromeDriverWithBrowser driverPath
ただオフライン環境というのがよくわかりません。スクレイピングもオフライン環境で行うということでしょうか?
とりあえずバージョン違いのエラーが出たら手動で更新してもらえばよいです。
お返事ありがとうございます。
早速試してみます。
オフライン環境について:
外部ネットに接続されていない職場のPCで、業務で使用するedge上で動くアプリの自動化を目的としているためです。
なお、インストール権限がなく、seleniumbasic、vscode、Python等を入れることができません。
エクセルVBAなら使えること、他端末からファイルを受信することはできることから、webdriverとseleniumVBAを入れることならできます。
このような環境下での自動化の手段として、参考にさせていただいております。
ご連絡ありがとうございます。イントラネット上でうまく動くかわかりませんが、オフラインということならEdgeの更新もない為、WebDriverも最初の導入だけでよいと思われます。ただEdgeとWebDriverのバージョンを合わせる必要がありますのでご注意ください。ご健闘お祈りします