はじめに
こんにちは。今回はExcel VBAでブラウザを操作してWebページからの情報取得をする方法について書いていきます。
この記事では、VBAでGoogleChromeを操作するための環境準備についてをメインで説明し、最後にサンプルとしてGoogle検索をVBAから実行してみるという流れとなっています。
動作環境はWindows10で、Excelは2019です。
環境設定
Selenium Basicのインストール
まずはSelenium Basicをインストールしていきます。
Seleniumとはブラウザ操作を自動化できるフレームワークで、これをVBAから呼び出すことでブラウザを制御します。
florentbr.github.io
上記のURLを開き、ページ中段ぐらいの「Download」項目の「Release page」をクリックします。
記事執筆時点での最新は SeleniumBasic-2.0.9.0.exe なので、これをクリックしてダウンロードします。
ダウンロードできたら、SeleniumBasic-2.0.9.0.exe を実行し、インストーラを起動します。
「Next」を押下します。
「I accept the agreement」を押下します。
必要なライブラリにチェックを付けて「Next」を押下します。
今回はGoogleChromeを使用するので、「WebDriver for Chrome」が入っていれば大丈夫です。
内容を確認して「Install」を押下します。
「Finish」を押下します。
これでSelenium Basicのインストールは完了です。
ChromeDriverのダウンロード
次はChromeDriverのダウンロードですね。
Selenium Basicをインストールした際にChromeDriverも一緒にダウンロードされているのですが、実際に使用するGoogleChromeのバージョンに合わせたChromeDriverを使用する必要があるため、別途ダウンロードしましょう。
まずは使用するGoogleChromeのバージョンを確認します。
GoogleChromeを起動し、ウィンドウ右上の設定メニューから「ヘルプ」⇒「Google Chromeについて」を開きます。
するとバージョンが表示されるので、これを確認します。
現状私の環境ではバージョン94.0を使用していることが分かります。
では上記で確認したバージョンに合ったChromeDriverをダウンロードしましょう。
以下のURLを開きます。
chromedriver.chromium.org
ページ中段あたりに、バージョンごとにChromeDriverのダウンロードリンクが表示されているので、
今回はGoogleChromeのバージョン94.0に合った、ChromeDriver94.0のリンクをクリックします。
動作させる環境はWindows10なので、Windows用のChromeDriverをダウンロードします。
ダウンロードしたzipファイルを展開すると「chromedriver.exe」というファイルが格納されています。
これを「C:\Users\ユーザ名\AppData\Local\SeleniumBasic」に配置します。
(すでに同名のファイルが存在すると思いますが、上書きしましょう)
これでChromeDriverのダウンロードは完了です。
VBA上でのライブラリ参照設定
最後にVBAからSelenium Basicを使用可能な状態にします。
Excelを起動し、「開発」タブから「Visual Basic」をクリックし、Visual Basic Editor(VBE)を開きます。
VBEの「ツール」タブから「参照設定」を開きます。
参照可能なライブラリ一覧が表示されるので、「Selenium Type Library」にチェックを入れて「OK」をクリックします。
これでライブラリの参照設定は完了です。
VBAのサンプルコード
では試しにVBAからGoogleChromeを操作させてみましょう。
Excelファイルを新規作成し、以下のようにセルに値を入れておきます。
そしてVBEを起動し、以下のコードを記述し保存します。
このサンプルコードはExcelのB2セルから取得したURLを開き、
表示された検索窓にC2セルで指定した検索ワードを入力後、検索を実行するというものです。
Option Explicit Sub main() Dim chromeDriver As New Selenium.chromeDriver Dim targetURL As String, searchKeyword As String Application.DisplayAlerts = False Application.ScreenUpdating = True ' ================== 処理開始 ================== MsgBox "Start! Please wait...", vbInformation targetURL = ThisWorkbook.Worksheets("Sheet1").Range("B2") searchKeyword = ThisWorkbook.Worksheets("Sheet1").Range("C2") ' chromeを起動し、対象URLにアクセス chromeDriver.Get targetURL chromeDriver.FindElementByCss("body > div.L3eUgb > div.o3j99.ikrT4e.om7nvf > form > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input").SendKeys searchKeyword chromeDriver.FindElementByCss("body > div.L3eUgb > div.o3j99.ikrT4e.om7nvf > form > div:nth-child(1) > div.A8SBwf > div.FPdoLc.lJ9FBc > center > input.gNO89b").Click Stop ' chromeの終了 chromeDriver.Close Set chromeDriver = Nothing MsgBox "Complete!", vbInformation End Sub
このコードですが、
Dim chromeDriver As New Selenium.chromeDriver
chromeDriver.Get
この部分でGoogleChromeを起動して指定したURLを開く動作をします。
chromeDriver.FindElementByCss(…)
この部分では開いたWebページの要素を指定して、キータイプやクリック操作を実施しています。
要素の指定方法についての詳細は別の記事で書こうと思います。
chromeDriver.Close
Set chromeDriver = Nothing
ここではGoogleChromeを閉じる処理をしています。
基本的にVBAでGoogleChromeを操作する場合、上記の流れとなるのでこれを基本形としてほかの処理を実装する感じになります。
おわりに
今回はExcel VBAでGoogleChromeを操作する方法について書きました。
次はもっと実用的なスクレイピングをやってみようと思います。
最後まで読んでいただきありがとうございました。