SeleniumBasicでGoogleChromeの「ブラウザの起動」と「ブラウザを閉じる」といった基本的な動作を解説します。本記事では、SeleniumBasicの操作(基礎編)第2回の内容と共に、SeleniumBasicのExmaples.xlsmにあるbrowsers_allの解説を兼ねています。
マクロファイル ダウンロード
このページで掲載しているVBAのマクロファイルを以下リンクからダウンロードできます。必要に応じてファイルダウンロードして活用ください。
ダウンロードファイルのマクロ実行注意事項(ここをクリック)
ファイルダウンロード後、マクロ実行するまでの注意事項を記載しておきます。
マクロファイルを実行するには、事前にSeleniumBasicをインストールしておく必要があります。同時にChromeDriverを現在のChromeブラウザのバージョンに合わせて更新しておきます。SeleniumBasicのインストールとChromeDriverの更新については以下記事を参照ください。
マクロファイルを開き、「コンテンツの有効化」をクリックします。
Web上からダウンロードしたマクロファイルはデフォルトで実行できない様に設定されています。ダウンロードしたマクロファイルを開いて以下の様に(このファイルのソースが信頼できないため、Microsoftによりマクロの実行がブロックされました。)表示される場合はファイルプロパティを変更します。
ファイルプロパティを開いて、セキュリティ項目の「許可する」にチェックを入れ、「OK」をクリックする。
VBE(Visual Basic Editor)画面の参照設定を開き、「Selenium Type library」にチェックを入れて、OKをクリックします。
一度ファイルを閉じて、再度ファイルを開き、「コンテンツの有効化」をクリックします。その後、マクロ実行します。ダウンロードファイルは基本的に実行ボタンを実装していませんので、マクロファイルを実行するには、VBEを開き、デバッグ実行によって、スクリプト実行します。
Excelファイルを開いた後、Alt + F11にてVBEエディタを開き、該当のプロシージャまでカーソル移動して、F5にてデバッグ実行します。
ExcelVBAの参照設定
SeleniumBasicをExcelVBAから利用するための準備として、参照設定に「Selenium Type Library」にチェックを入れておきます。このチェック項目はSeleniumBasicをインストールすると現れるライブラリです。
VBAコード解説(browsers_all)
GoogleChromeブラウザを開いて、閉じる動作をこのプロシージャで紹介しています。
Sub Use_Chrome()
Dim driver As New ChromeDriver
driver.Get "https://www.google.co.jp"
stop
driver.Quit
End Sub
各行の説明は以下のとおりです。
Dim driver As New ChromeDriver
ChromeDriverのインスタンス生成し、GoogleChromeを立ち上げます。これでChromeブラウザを操作できる様になります。このdriverオブジェクトで指定したURLのホームページを開く事ができる様になります。
とにかくChromeブラウザをSeleniumBasicから扱うためにはこの宣言(インスタンス生成)が必要になります。「New」を付け忘れない様に注意してください。
driver.Get "https://www.google.co.jp"
ChromeDriverのGetメソッドで開きたいホームページのURLを指定することができます。ここではGoogleホームページのURLを指定し、変遷しています。「driver.Get "<URL>"」でホームページを開ける、と思ってもらえればとりあえず大丈夫です。
ChromeDriverには多くのメソッドとプロパティが用意されています。ChromeDriverのリファレンスを用意していますので、気になる方はこちらから参照してみてください。
stop
SeleniumBasicは、命令文が終了すると自動的にブラウザが落ちてしまいますので、stopメソッド(stopメソッドはVBA共通のメソッド)にてマクロを途中で停止します。
driver.Quit
ChromeDriverのQuitメソッドでブラウザを閉じます。同時にdriverで変数設定したChromeDriverオブジェクトを破棄しています。VBAで変数破棄をする場合のSet driver = Nothingでも同様の結果となります。
SeleniumBasicの場合、「おまじない」と思って破棄は明記した方が良いです。
以下は少し発展的(?)な内容ですので、基礎編としては読み飛ばしてもらってかまいません。
Column:ドライバーの破棄(ここをクリック)
driver.Quitを実行せずとも、End Subでマクロが終了すれば、driverが自動的に破棄されますので、この一文が無くてもブラウザは終了します。しかし、複雑な構文を書くと、この一文が無いとdriverが上手く破棄されず、ブラウザが起動したままでマクロが終了する場合があります。検証のため、自分で作成したマクロ分を何度も実行すると実行する度にChromeブラウザが起動するため、デスクトップ上にブラウザが乱立する状態になる可能性があります。
また、SeleniumBasicを実行すると一時的にChromeプロファイルを作成します。ドライバーが上手く破棄されないと一時的に作成されたChromeプロファイルも破棄されずにそのまま一時フォルダに残ってしまいます。この一時ファイルがかなりPC内のストレージを圧迫していまいます。何度もドライバーが破棄されないマクロ構文を実行していると、簡単に数GBのストレージを圧迫してしまうことになります。
定期的にこのプロファイルを削除することもできます。方法は以下記事に掲載しています。