VBAとSeleniumBasicライブラリでブラウザ操作自動化!

Excel
この記事は約9分で読めます。

毎日同じWebシステムで同じ操作をしていると、「ブラウザ操作を代わりに誰かやってくれないかな~」と思うことはありませんか?

 

SeleniumBasicを使えば、VBAからブラウザの操作を簡単に行うことができます。

 

Webスクレイピングの基本についての記事もありますので、まずはそちらをチェックしておくことをおすすめします。

Webスクレイピングの基本!HTTP通信について

Webスクレイピングの基本!HTTP通信について
VBAでWebブラウザ操作を自動化するにあたって、基本的なことをまとめました。 VBAでのWebスクレイピングは初めてだったので、改めて基本的なことを学習したので、Webスクレイピングが初めての方にシンプルにお伝えできればと思います。 We...

Webスクレイピングの基本!要素の属性とXPathの調べ方

Webスクレイピングの基本!要素の属性とXPathの調べ方
VBAでWebブラウザ操作を自動化するにあたって、基本的なことをまとめました。 今回は、Webページ内の要素を操作するときに必要な、要素の情報を調べる方法です。Webスクレイピングが初めての方にシンプルにお伝えできればと思います。 Webペ...

 

今回、VBAでのWebブラウザ操作で、ライブラリを試したいと思ったので、SeleniumBasicをインストールして使用してみました。

 

基本的なWeb操作しか試してないので、いろいろ割愛していますが参考になればうれしいです!

 

Seleniumとは

SeleniumとはWeb操作のためのフレームワークです。Seleniumは、WebDriverを介してブラウザを操作します。

 

WebDriverについて

WebDriverとは、ユーザーの操作をシミュレートすることで、ブラウザの操作テストを行うことができるツールのことです。

このWebDriverを使って、VBAやRPAツール等からWebDriverに指示を出すことでブラウザ操作ができます。

WebDriverは、ブラウザの種類ごとにドライバーがあり、各PCにダウンロードして使用します。

 

EdgeWebDriver

Microsoft Edge WebDriver (英語) |Microsoft Edge 開発者

ChromeWebDriver

ダウンロード  |  ChromeDriver  |  Chrome for Developers

 

 

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を同名で上書きします。

 

参照設定

ExcelVisualBasicEditorを開きます。

VisualBasicEditorについて詳しくはこちら↓

VBAとは?マクロとの違いやVBA初期導入まで

VBAとは?マクロとの違いやVBA初期導入まで
VBA(Visual Basic for Applications)は、ExcelやWord、Accessといった、Microsoft Officeで使用するプログラミング言語です。 VBAはExcel内のデータ集計や、分析、SUMやAVE...

 

[ツール]メニュー→[参照設定]で[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であれば、ChromeWebDriverを指定します。

 

‘ログイン画面にアクセス

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の調べ方は以下を参照してください↓

idclass属性も同じように調べることができます。

 Webスクレイピングの基本!要素の属性とXPathの調べ方

Webスクレイピングの基本!要素の属性とXPathの調べ方
VBAでWebブラウザ操作を自動化するにあたって、基本的なことをまとめました。 今回は、Webページ内の要素を操作するときに必要な、要素の情報を調べる方法です。Webスクレイピングが初めての方にシンプルにお伝えできればと思います。 Webペ...

 

‘ログイン後フレームを切り替えてリンクをクリック

Driver.SwitchToFrame "フレーム名をここに入力"

 Webページの中には、分割された複数の画面を1つにまとめて構成しているものがあります。

現在のフレームから別フレームの要素を操作したいときは、別フレームにフォーカスを切り替えて処理を行う必要があります。

 フレームの切り替えはframeタグのname属性を指定することで切り替えができます。

 

フレーム切り替え後、別のフレームの要素を操作したいときは、一旦前のフレーム(親フレーム)に戻る必要があります。子フレームから子フレームへの切り替えはできないということです。Driver.SwitchToParentFrame で親フレームに戻ることができます。

 

Driver.FindElementByLinkText("リンク文字をここに入力").Click

フレーム切替をしたら、切り替えたフレーム内の要素をクリックします。「リンク文字をここに入力」の部分にリンクテキストを入力します。

 

まとめ

以上SeleniumBasicの導入と基本的な使い方についてでした。

私自身SeleniumBasicは普段使用しないので本当に触り部分のみの紹介でしたが、参考になれば嬉しいです。

 

ライブラリはインストール許可が出ない!となれば、VBA単体でWebDriverWeb操作の指示を出すしかないです。以下が参考になると思います↓

VBAでSeleniumを使わずにEdgeブラウザ操作する

VBAでSeleniumを使わずにEdgeブラウザ操作する
VBAでEdgeブラウザを操作したいけど、環境整えるのにハードル高くて、ライブラリもインストールできない!VBAだけで何とかならないか!?と思って調査しました。 Webスクレイピングの基本についての記事もありますので、まずはそちらをチェック...