スポンサーリンク

【TinySeleniumVBA】初心者向けに導入方法についてわかりやすく説明します

  • ソフトがインストールできないのでSelenumBasicが使えない
  • TinySeleniumVBAのインストール方法がよくわからない

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

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

~2022/08/02修正~
TinySeleniumVBAの作者(!)の@uezochanさんと@yajuさんからご指摘いただきました。
TinySeleniumVBA0.1.3_import_ready.zipをダウンロードすれば各モジュールはそのまま移動可能になっています。簡単になっていますのでご確認ください(私は間違ってSorce Codeをダウンロードしていました・・・)

元となったお二人のサイトをあげさせていただきます。
Excel VBAでSeleniumBasicを使わずにスクレイピングする
【Excel】TinySeleniumVBA(Chromium版Edge)を使用したWebアプリ操作

なおTinySeleniumVBAの導入方法については色々なサイトで説明があります。
ただ実は躓く箇所がいくつかあります。

このサイトではその点についても細かく解説しますのでうまく導入できない人も含めて読んでいただければ幸いです。

先に話しておくと、以下の部分で躓きます。

  1. TinySeleniumVBAでのclsモジュールの追加
  2. clsモジュール内のコードの書き換えの部分
  3. ChromeDriverの保存先

それらの部分についてより詳しく説明していきます。

スポンサーリンク

導入に必要なもの

まず前提として今回はWindows+Chromeを用いたスクレイピングを想定して解説します。


導入に必要なものは「TinySeleniumVBA」「ChromeDriver」「WebDriverManager for VBA」になります。

なお「WebDriverManager for VBA」については必須ではないですが、導入後が楽になるのでここで入れておきます。

TinySeleniumVBAの入手

TinySeleniumVBAはSeleniumBasicをインストールすることなく、VBAから直接ChromeやEdge(のWebDriver)を操作できるように作成されたモジュール類です。

@uezoさんが作成、提供してくださっています。感謝です。

入手方法について以降で説明します。

1 GitHubより最新版(図のTinySeleniumVBA0.1.3_import_ready.zip)を入手する

クリックすると拡大します

2 入手ファイルを解凍する

以下のファイルが入手できていればOKです。

クリックすると拡大します

TinySeleniumVBA内の各モジュールの追加

次からはVBAにTinySeleniumVBA内の4つのモジュールを追加していきます。

1 VBEを立ち上げる
2 標準モジュールを追加する

クリックすると拡大します

3 解凍したファイルのうち「Example.bas」[JsonConverter.bas][WebDriver.cls][WebElement.cls]の4つをVBAのプロジェクトにドラッグ&ドロップする(厳密にはExample.basは不要だが、練習用にダウンロードしておく)

~2022/08/02修正~
以下4~7は対応不要です。

以下のように表示されていればOK

なお、[WebDriver.cls][WebElement.cls]はクラスモジュールなのですが、クラスモジュールには入りません
これはGitHubの仕様上の問題らしいですが、最新版でも改善されてはいないので注意ください。

その為以下の方法で対応します。

4 標準モジュールの[WebDriver][WebElement]をそれぞれ[WebDriver1][WebElement1]とする。
(何でもいいですが名前の重複を避ける為に違う名前にしてください)

クリックすると拡大します

5 「挿入」-「クラスモジュール」で2つクラスモジュールを作成する

クリックすると拡大します

6 クラスモジュールの名前をそれぞれ[WebDriver][WebElement]とする。

7 標準モジュール[WebDriver1]内のコードをコピーし、クラスモジュールの[WebDriver]に貼り付ける。

なお、VERSION~とBEGIN、MultiUse、Endの行はいらないのでコピーしないでください。
(筆者はここで何度か躓きました)

クリックすると拡大します

7 同様に標準モジュール[WebElement1]内のコードをコピーし、クラスモジュールの[WebElement]に貼り付ける。こちらも最初の3行は不要
8 標準モジュール[WebDriver1]と[WebElement1]は不要なので右クリック→「WebElementの開放」→出てきた警告[削除する前にWebDriver1をエクスポートしますか?を「いいえ」にする
(ちゃんと消しておかないと実行時に構文エラーが出ます)

クリックすると拡大します

以下のようになっていればOKです。

クリックすると拡大します

ChromeDriverの入手

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

クリックすると拡大します

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

クリックすると拡大します

3 ChromeDriverのサイトにアクセスする
4 同じバージョンのものをクリックする(該当するものがなくても最初のバージョン(ここでは103)があっていればよいと思われる。サイト内にはマイナーチェンジのバージョンのものもある)

クリックすると拡大します

5 windows版(win32)をダウンロードする

クリックすると拡大します

解凍して以下が取れていればOKです。

クリックすると拡大します

ChromeDriverの保存

1 先ほど入手したChromeDriverを以下の場所に入れる(DocumentsフォルダにWebDriverフォルダを作成する)
C:\Users\USERNAME\Documents\WebDriver\edgedriver.exe

クリックすると拡大します

次項でWebDriverManager for VBAを導入しますが、デフォルトでのファイルの参照先は上記のフォルダになっています。
別のフォルダでも問題ないようですが、その際は指定する必要があるのでここにしておきます。
ドラッグ&ドロップで入れればOKです。

WebDriverManager for VBAの入手

WebDriverManager for VBAはWebDriverのバージョンを自動でブラウザに合わせてくれる便利なライブラリです。@yamato1413さんが作成してくださっています。

手動で毎回更新する必要がなくなるので一緒に入れておきます。

1 GitHubにアクセスする
2 「Code」をクリックし、「Download ZIP」でファイルをダウンロードする

クリックすると拡大します

解凍して以下が取れていればOKです。

クリックすると拡大します

WebDriverManager for VBAのモジュールの追加

1 先ほどダウンロードしたファイルのうち、「WebDriverManager4TinySelenium.bas」をVBEの標準モジュールにドラッグ&ドロップする

クリックすると拡大します

以下の様に入っていればOKです。

クリックすると拡大します

参照設定の変更

TinySeleniumVBAを使用するには「Microsoft Scripting Runtime」の参照設定をする必要があります。

1 「ツール」ー「参照設定」から Microsoft Scripting Runtime にチェックを入れる

クリックすると拡大します
クリックすると拡大します

これで使用する為の準備は完了です。

コードの変更

では、実際にコードを書いていきます。今回はTinySeleniumVBAに入っていた「Example.bas」内のコードを書き換えることで動作確認を行います。

1 コード中間部の以下の3つを書き換える

  • 「Edge」を「Chrome」にする
  • 「Driver.Chrome“path/to/edgedrive.exe”」を削除する(ここではコメントアウトにしてます)
  • 「Driver.OpenBrowser」を「SafeOpen Driver, Chrome」にする(途中はピリオドではなく、カンマなので注意)

実際のコードは以下のようになります。

クリックすると拡大します

最後のコードはWebDriverManager4 for VBAに実装されているSafeOpen関数です。
この関数によりWebDriverのバージョンを確認したうえで実行するようにしています。

2 コードを実行してみる。Google Chromeが立ち上がり、「yomoda soba」を入力、以下のエラーが出ることを確認する

クリックすると拡大します
クリックすると拡大します

これは処理が早すぎて「Google検索」ボタンにアクセスできないことを示しています。

その為以降でマクロ処理を止める関数を導入します。

3 以下のコードを図の赤枠の部分に挿入する

#If Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sleep 2000
クリックすると拡大します

このコードはWindows API用のコードです。
TinySeleniumVBAには処理を途中で止めるコードがない(と思われる)のでマクロ自体の処理を止める「Sleep関数」を使えるようにします。

詳しくはこちらに書かれています。

なおVBE上では使えない方の構文が赤色で表示されますが気にしないでOKです
最後にこのコードを実行して「yomoda soba」を検索した結果が表示されれば完了です。

今回のまとめ

今回はTinySeleniumVBAの導入方法について説明しました。

これを使えば、インストールの際に権限も必要なく導入することができます。今回の記事によって快適に使用できるようになっていただければと思います。

次回はTinySeleniumVBAで使うメソッドについて説明します。

SeleniumBasicはソフトのインストールは必要となりますが、モジュールの導入は不要です。SeleniumBasicについて勉強されたい方は以下の記事もお勧めです。

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

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

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

コメント

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