毎日同じWebシステムで同じ操作をしていると、「ブラウザ操作を代わりに誰かやってくれないかな~」と思うことはありませんか?
SeleniumBasicを使えば、VBAからブラウザの操作を簡単に行うことができます。
Webスクレイピングの基本についての記事もありますので、まずはそちらをチェックしておくことをおすすめします。


今回、VBAでのWebブラウザ操作で、ライブラリを試したいと思ったので、SeleniumBasicをインストールして使用してみました。
基本的なWeb操作しか試してないので、いろいろ割愛していますが参考になればうれしいです!
Seleniumとは
SeleniumとはWeb操作のためのフレームワークです。Seleniumは、WebDriverを介してブラウザを操作します。
WebDriverについて
WebDriverとは、ユーザーの操作をシミュレートすることで、ブラウザの操作テストを行うことができるツールのことです。
このWebDriverを使って、VBAやRPAツール等からWebDriverに指示を出すことでブラウザ操作ができます。
WebDriverは、ブラウザの種類ごとにドライバーがあり、各PCにダウンロードして使用します。
EdgeWebDriver
ChromeWebDriver
SeleniumBasicとは
SeleniumBasic は、VBAでのWeb操作用にSeleniumを利用できるようにしたライブラリです。
このライブラリを使えば、ブラウザ操作でやりたいことがほぼできると思います。使える環境であれば優先的に使いたいライブラリです。
WebDriver と同じく、SeleniumBasicも各PCにインストールする必要があります。
SeleniumBasicの環境構築
VBAでSeleniumBasicを使用するために環境構築を行います。環境構築といっても、とてもシンプルで簡単です。
SeleniumBasicのインストール
インストールは以下から行います。
SeleniumBasic v2.0.9.0のリリース ·florentbr/Seleniumベーシック ·GitHubの
exeファイルをクリックしダウンロードします。
ダウンロードしたファイルを右クリックし、[管理者として実行]をクリックします。
セットアップ画面に従いインストールします。
(基本的に何も変更せず[Next]で進めていって[Install]でいいです。)
EdgeのWebDriverをダウンロード
以下から、使用しているEdgeブラウザと同じバージョンのEdgeWebDriverをダウンロードします。
ブラウザのバージョンはEdgeブラウザの設定から「Microsoft Edgeについて」で確認できます。
Microsoft Edge WebDriver (英語) |Microsoft Edge 開発者
WebDriverの入れ替え
インストールしたSeleniumBasicのフォルダに格納されているWebDriverを、先ほどダウンロードしたWebDriverと入れ替えます。
SeleniumBasicのフォルダは、Cドライブ内の[Program Files]にあります。SeleniumBasicフォルダ内の、[edgedriver.exe]というファイルがWebDriverです。
先ほどダウンロードしたWebDriverを同名で上書きします。
参照設定
ExcelのVisualBasicEditorを開きます。
VisualBasicEditorについて詳しくはこちら↓

[ツール]メニュー→[参照設定]で[Selenium Type Library]にチェックを入れます。
これで環境構築は完了です。SeleniumBasicが使用できるようになりました。
Webブラウザ操作の実装
VisualBasicEditorで標準モジュールを追加し、内容を記述していきます。
例として、あるシステムのログイン画面にアクセスし、パスワードを入力してログイン後、遷移先画面のリンクをクリックする処理です。
コードの例です。
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
Sub Main()
‘EdgeのWebDriverオブジェクト作成
Dim Driver As Selenium.EdgeDriver
Set Driver = New Selenium.EdgeDriver
‘ログイン画面にアクセス
Driver.Start
Driver.Get "https://○○○○ "
Sleep 1000
‘要素のname属性(例:pass)を指定しパスワードを入力
Driver.FindElementByName("pass").SendKeys ("パスワードをここに入力")
Sleep 1000
'XPath指定でログインボタンをクリック
Driver.FindElementByXPath("XPathをここに入力").Click
Sleep 10000
‘ログイン後フレームを切り替えてリンクをクリック
Driver.SwitchToFrame "フレーム名をここに入力"
Driver.FindElementByLinkText("リンク文字をここに入力").Click
Stop
End Sub
以下コードの説明です。
1行目のSleep関数宣言部分について。
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
ブラウザの操作と操作の間に[Sleep ○○]を入れると、Webページの読み込み前に操作することによるエラーを回避できます。
Windows APIであるSleep関数を使用するには、1行目にSleepを使うための宣言を記述する必要があります。停止時間は、Sleepの後にミリ秒単位で指定します。
‘EdgeのWebDriverオブジェクト作成
Dim Driver As Selenium.EdgeDrive
Set Driver = New Selenium.EdgeDriver
ブラウザ操作を指示するWebDriverオブジェクトを作成します。ブラウザがChromeであれば、ChromeのWebDriverを指定します。
‘ログイン画面にアクセス
Driver.Start
Driver.Get "https://○○○○ "
Sleep 1000
[Driver.Start]でブラウザの起動を行います。
そのあと、[Driver.Get “URL”]でアクセスするWebページのURLを指定します。
’要素のname属性(例:pass)を指定しパスワードを入力
Driver.FindElementByName("pass").SendKeys ("パスワードをここに入力")
Sleep 1000
テキストボックスのname属性が[pass]である要素に、パスワードを入力します。[FindElementsBy○○]には、nameのほかに以下の関数があります。
FindElementsByClass |
FindElementsByCss |
FindElementsById |
FindElementsByLinkText |
FindElementsByPartialLinkText |
FindElementsByTag |
FindElementsByXPath |
上記のうち、よく使われるのは[FindElementsById]か[FindElementsByName]か[FindElementsByLinkText]か[FindElementsByXPath]だと思います。
Driver.FindElementByXPath( "XPathをここに入力").Click
“XPathをここに入力“の部分にコピーしたXPathを貼り付けます。この要素に対してClickを実行します。
name属性やXPathの調べ方は以下を参照してください↓
idやclass属性も同じように調べることができます。

‘ログイン後フレームを切り替えてリンクをクリック
Driver.SwitchToFrame "フレーム名をここに入力"
Webページの中には、分割された複数の画面を1つにまとめて構成しているものがあります。
現在のフレームから別フレームの要素を操作したいときは、別フレームにフォーカスを切り替えて処理を行う必要があります。
フレームの切り替えはframeタグのname属性を指定することで切り替えができます。
Driver.FindElementByLinkText("リンク文字をここに入力").Click
フレーム切替をしたら、切り替えたフレーム内の要素をクリックします。「リンク文字をここに入力」の部分にリンクテキストを入力します。
まとめ
以上SeleniumBasicの導入と基本的な使い方についてでした。
私自身SeleniumBasicは普段使用しないので本当に触り部分のみの紹介でしたが、参考になれば嬉しいです。
ライブラリはインストール許可が出ない!となれば、VBA単体でWebDriverにWeb操作の指示を出すしかないです。以下が参考になると思います↓
