【SeleniumVBA】(2025年1月版)初心者向けに導入方法についてわかりやすく説明します(Excel VBA)

VBAスクレイピング
  • ソフトがインストールできないのでSelenumBasicが使えない
  • TinySeleniumVBAではメソッドが足りない
  • TinySeleniumVBA,SeleniumBasicとかって何?

そういった方向けに今回SeleniumVBAの導入方法についてわかりやすく説明します。

初めての方でも躓かないように図を多くいれていますので安心して読んでいってください。

2024年3月にSeleniumVBAはマクロ化されました。その為その導入方法は以下2通りとなります。

  • マクロとして使用する
  • アドインとして使用する

マクロをアドイン化してしまえば、新しいExcelファイルからでもその機能を呼び出せます。

ただスクレイピングは使用箇所が限定される為、あまりメリットはないように感じます。

またアドインって何?アドインまではいらないという方もおられると思いますので、マクロからの導入方法について説明します。

もしアドイン化と参照設定の方法については以下の記事を参考にしていただければと思います。

最新版のSeleniumVBAについて記事にされている@sele_chanさんの記事です。私の記事は更新前のものが多かったのでアドバイスくださいました。難しい要素取得まで網羅されているのでこの方の記事を見ていただければより深い理解ができると思います。

スポンサーリンク

SeleniumVBAについて

SeleniumVBATinySeleniumVBAを修正・拡張したものです。

SeleniumBasicのようにソフトをインストールする必要がなく、ChormeDriverのみでの自動化が可能になっています。

@GCuser99さんによって作成されています。

今回は参照設定から導入する方法について説明します。

seleniumVBA.xlamの入手

SeleniumVBAのアドインを入手するには以下の手順で行います。

1 Githubにアクセスする

2 ページ中盤のSetupのところにある「SeleniumVBA.xlsm」をクリックする

2 「Download raw file」をクリックする

3 SeleniumVBA.xlsmファイルを右クリックし、プロパティをクリックする。
セキュリティの部分について「許可する」のチェックボックスをいれる。


5 ファイルを開き、Alt+F11でVBEの画面を開く。SeleniumVBA.xlsmについて「標準モジュール」と「クラスモジュール」があることを確認する。

これでSeleniumVBAを動かす環境は整いました。

ChromeDriverの入手(現在は不要)

こちらはWebDriverManagerクラスの更新により不要になりました。

現在は自動で最新版がインストールされるようになっています。

ただGoogle Chromeの動作を自動化するためにはChromeDriverが必須となります。

以下の操作を自動で行っていますので備忘録としておいておきます。

1 Chromeブラウザを開き、右上の「3点リーダー」をクリックする。「ヘルプ」-「Google Chomeについて」をクリックする

2 現在のバージョンを確認する(図は131.0.6778.265となっている)

3 ChromeChrome for Testing(CfT)の可用性ダッシュボードにアクセスする
4 同じバージョンのものをクリックする(該当するものがなくても最初のバージョン(ここでは131)があっていればよいと思われる。サイト内にはマイナーチェンジのバージョンのものもある)

5 該当するChromeDriver(ここではwin64)のURLをコピーし、アドレスバーに貼り付ける

ダウンロードしたファイルを解凍してchromedriver.exeが取れていればOKです。

ChromeDriverの保存

1 先ほど入手したChromeDriverダウンロードフォルダにいれる。

これでChromeDriverの最新版を保存することができました。

なお次項でWebDriveManagerクラスを使用していますが、パスの指定はしていません
パスの指定をしない場合はダウンロードフォルダを見る仕様になっている為です。

ダウンロードフォルダ以外を指定したい場合はパスを指定する必要があります。

WebDriverを自動更新する

SeleniumVBAにはWebDriverを自動更新する為のクラスWebDriverManager.cls」が存在します。

これを使用するには以下のコードを最初に記載します。

Sub sample()
    
    Dim driver As SeleniumVBA.WebDriver
    Dim mngr As SeleniumVBA.WebDriverManager
    Dim keys As SeleniumVBA.WebKeyboard
    Dim keySeq As String
   
    Set driver = SeleniumVBA.New_WebDriver
    Set keys = SeleniumVBA.New_WebKeyboard
    Set mngr = SeleniumVBA.New_WebDriverManager

   'WebDriverを自動更新するWebDriverManagerクラスを使用する
    mngr.AlignChromeDriverWithBrowser

WebDriverManagerクラスAlignDriverWithBrowserメソッドでChromeのバージョンとインストールしているWebDriverのバージョンを比較し、異なっていたらインストールするようにしています。

Googleで検索する際のコード

WebDriverManagerでChromeDriverのバージョンを確認をしたのちに、Googleで検索するコードは以下になります。

Sub sample()
    
    Dim driver As SeleniumVBA.WebDriver
    Dim mngr As SeleniumVBA.WebDriverManager
    Dim keys As SeleniumVBA.WebKeyboard
    Dim keySeq As String
   
    Set driver = SeleniumVBA.New_WebDriver
    Set keys = SeleniumVBA.New_WebKeyboard
    Set mngr = SeleniumVBA.New_WebDriverManager

   'WebDriverを自動更新するWebDriverManagerクラスを使用する
    mngr.AlignChromeDriverWithBrowser
     
    'Chromeを選択してブラウザを開く
    driver.StartChrome
    'driver.StartEdge
    driver.OpenBrowser
     
    'Googleを開く
    driver.NavigateTo "https://www.google.com/"
    driver.Wait 1000
     
    'This is coolとリターンキーを入力する
    keySeq = "This is COOL!" & keys.ReturnKey
    driver.FindElement(By.Name, "q").SendKeys keySeq
    driver.Wait 2000

End Sub

最初の数行はWebDriver更新用のコードです。

以降のコードについては次回以降で説明しますが、これでスクレイピングができるようになります。

今回のまとめ

今回はインストール不要なSeleniumVBAの導入方法について説明しました。

SeleniumVBA.xlsmのインストールだけで使用することができるようになっています。

次回はSeleniumVBAで実行できる操作について説明します。

ソフトのインストールは必要となりますが、SeleniumBasicはメソッドやプロパティのリファレンスがあり初心者にはわかりやすいソフトとなっています。SeleniumBasicについて勉強されたい方は以下の記事もお勧めです。

またSeleniumBasicについては以下の書籍もあります。どちらもSeleniumの使い方について詳しい説明がなされているのでお勧めです。

VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。

VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。

SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します

コメント

  1. 通りすがり より:

    IEを使わないExcel VBAでスクレイピングの記事を探していたらこちらの記事に辿り来ました。
    とてもわかりやすい記事をありがとうございます。
    今から導入するならTinySeleniumVBAとSeleniumVBAどちらが良いのでしょうか。
    ちょっとしたスクレイピング程度ならTinySeleniumVBAの方が動作も軽いなどありますでしょうか

    • blue blue より:

      コメントありがとうございます。ちょっとしたスクレイピングならTinySeleniumVBAの方が容量が少ないですしお勧めです。簡単な操作ならTinyのほうで事足ります。
      よりレベルの高いことをしたくなったらSeleniumVBAでもよいと思います。

      • tama より:

        参考になる記事を投稿していただき感謝します。
        seleniumVBAについて質問です。

        SeleniumVBA.xlamと同じ階層にweb driverを入れなくても使用出来ますか?
        また、その場合、どうやって使用するweb driverのパスを指定すればいいですか?

        お忙しい中恐縮ですが、ご回答頂けましたら幸いです。

  2. tama より:

    連投すみません。先ほどの質問の補足です。
    オフライン環境で実行するため、web driverをインターネットから自動更新することはできません。そのため、記事に記載されている「WebDriverManager.cls」にファイルパスを記載する方法をそのまま使えないのでは、と考えています。

  3. tama より:

    参考になる記事を投稿していただき感謝します。
seleniumVBAについて質問です。
    SeleniumVBA.xlamと同じ階層にweb driverを入れなくても使用出来ますか?
また、その場合、どうやって使用するweb driverのパスを指定すればいいですか?

    補足:
    オフライン環境で実行するため、web driverをインターネットから自動更新することはできません。そのため、記事に記載されている「WebDriverManager.cls」にファイルパスを記載する方法をそのまま使えないのでは、と考えています。

    • blue blue より:

      コメントありがとうございます。2つ質問ですね。
      ①web driverの入れる箇所は変更可能です。
      driverPath = “.\chromedriver.exe”がChromedriver.exeのパスを示しています。「.」がエクセルマクロファイル(xlsm)と同じ階層を示しています(相対参照)。「相対参照」「相対パス」で調べてもらったら任意の場所に入れられることもわかってもらえると思います。
      ②自動更新しないなら以下のコードを消去していただければいいです。
      mngr.AlignChromeDriverWithBrowser driverPath
      ただオフライン環境というのがよくわかりません。スクレイピングもオフライン環境で行うということでしょうか?
      とりあえずバージョン違いのエラーが出たら手動で更新してもらえばよいです。

      • tama より:

        お返事ありがとうございます。
        早速試してみます。

        オフライン環境について:
        外部ネットに接続されていない職場のPCで、業務で使用するedge上で動くアプリの自動化を目的としているためです。
        なお、インストール権限がなく、seleniumbasic、vscode、Python等を入れることができません。
        エクセルVBAなら使えること、他端末からファイルを受信することはできることから、webdriverとseleniumVBAを入れることならできます。

        このような環境下での自動化の手段として、参考にさせていただいております。

        • blue blue より:

          ご連絡ありがとうございます。イントラネット上でうまく動くかわかりませんが、オフラインということならEdgeの更新もない為、WebDriverも最初の導入だけでよいと思われます。ただEdgeとWebDriverのバージョンを合わせる必要がありますのでご注意ください。ご健闘お祈りします

タイトルとURLをコピーしました