Internet Explorerのサポートが終わり、VBAマクロからブラウザーを操作する手段としては「SeleniumBasic」が多く使われていると思います。
ただSeleniumBasicは使用前にインストールする必要がありますし、更新も数年止まっています。
そこで下記記事ではインストール不要で使える「TinySeleniumVBA」(うえぞう氏作成、MITライセンス)を紹介しています。
今回はTinySeleniumVBA同様にWebDriverさえあれば使えるフレームワーク「SeleniumWrapperVBA」(er-ri氏作成、MITライセンス)を紹介します。
WebDriverの準備
SeleniumWrapperVBAを使うには各ブラウザーのWebDriverが必要になりますので、環境に応じて必要なWebDriverを事前にダウンロードしておきます。
SeleniumWrapperVBAの使い方
- 「SeleniumWrapperVBA」を開きます。
- Code → Download ZIP から必要なファイル一式をダウンロードし、ダウンロードしたZipファイルを適当なフォルダに解凍します。
- VBEを開き、「Options.cls」、「WebDriver.cls」、「WebElement.cls」、「JsonConverter.bas」(VBA-JSON)ファイルをプロジェクトエクスプローラにドラッグ&ドロップしてインポートします(※「ファイル」メニュー → 「ファイルのインポート」からインポートしても可)。
- 「ツール」メニュー → 「参照設定」から「Microsoft Scripting Runtime」にチェックを入れて「OK」ボタンをクリックします。
- 下記コードを実行し動作確認を行います。下記コードではブラウザー起動時の引数としてWebDriverのパスを指定していますが、Path環境変数として設定しておいても良いようです。
Option Explicit 'SeleniumWrapperVBAでMicrosoft Edgeを操作するサンプル Public Sub Sample() Dim driver As WebDriver Set driver = New WebDriver With driver .Edge "C:\System\Driver\Edge\msedgedriver.exe" 'WebDriverのパスを引数で指定 .OpenBrowser .MaximizeWindow .NavigateTo "https://www.ka-net.org/blog/" .FindElement(By.ID, "main_col").TakeScreenshot ThisWorkbook.Path & "\Screenshot.png" .Quit End With End Sub
以上、SeleniumWrapperVBAを簡単に紹介してみました。
TinySeleniumVBAと同様にWebDriverさえあれば必要なファイルをインポートするだけで使えるので非常にお手軽です。
ライセンスもMITで使いやすいので、ブラウザー操作にお困りの方は一度試してみてはいかがでしょうか。
関連記事
※WebDriverを使わずにブラウザーを操作するためのライブラリを下記記事で紹介しています。
TinySeleniumVBAの機能拡張版です
最近知って使ってます
> liki さん
ご紹介いただき、ありがとうございます。
こうした拡張版が公開されるのもオープンソースならではですね!
大変参考になります。
https://github.com/GCuser99/SeleniumVBA