こんにちは、blueです。
2022年9月、SeleniumVBAがアドイン化されました。
それに伴って以下が変更となりました。
- インストール方法
- 変数の宣言方法、インスタンス化方法
インストール方法については以下の記事を参考ください。
この記事では変数の宣言方法、インスタンス化の方法について説明します。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。各言語における基本的なメソッド一覧も記載されていますのでコードを書く際の参考になります。
更新前後のコード
結論です。更新前後でのコードの書き方は以下になります。
2022年9月までのSeleniumVBA(以降旧SeleniumVBAとします)
Dim driver As New WebDriver
Dim mngr As New WebDriverManager
変数の宣言とインスタンス化を一度に行うことができます。
2022年9月以降のSeleniumVBA(以降新SeleniumVBAとします)
Dim driver As SeleniumVBA.WebDriver
Dim mngr As SeleniumVBA.WebDriverManager
Set driver = SeleniumVBA.New_WebDriver
Set mngr = SeleniumVBA.New_WebDriverManager
変数の型名を変更する必要があるのとインスタンス化を分ける必要があります。
以降でその理由について述べます。
旧SeleniumVBA
2022年9月までSeleniumVBAはExcelマクロブックをダウンロードして使用するのが普通でした。
以下の様に「seleniumvba_v○○.xlsm」というExcelマクロブックをダウンロードすることで使用することができました。
この場合スクレイピングに必要なSeleniumVBAのクラスモジュールはExcelマクロブックのプロジェクト内に入っていました。
その為クラスの宣言とインスタンス化を同時にすることができました。
新SeleniumVBA
2022年9月以降SeleniumVBAはアドイン化されました。
以下の様に「SeleniumVBA.xlam」というファイル名のアドインをインストール、または参照設定でインストールする方法となりました。
この場合SeleniumVBAのクラスモジュールはコードを書くプロジェクトとは別のプロジェクトに入ることとなりました。
これが変数の宣言方法とインスタンス化方法の変更の理由になります。
新SeleniumVBAでのコードの書き方
別プロジェクトのクラスモジュールの使用方法は基本以下となります。
- 型の前にプロジェクト名を記載する(この場合SeleniumVBA)
- インスタンス化は標準モジュール内のClassConstructionsプロシージャを使用する
前者はプロジェクト間をまたぐ際に必要となります。
後者についてですが、別プロジェクトのクラスモジュールはそのままではインスタンス化できない決まりがあります。
アドイン化されたクラスの使用方法については以下が参考になります。
その為一般的には標準モジュール(SeleniumVBAではClassConstructions)にインスタンス化用のプロシージャが用意されています。
SeleniumVBAではNew_○○○となっているのでインスタンス化の際にはこのFunctionプロシージャを使用します。
これがSet driver=SeleniumVBA.New_WebDriverとなる理由です。
まとめると
- オブジェクト宣言の際は型にプロジェクト名(SeleniumVBA)を追加する必要がある
- オブジェクトのインスタンス化はプロジェクト名.New_○○○とで記載する
となります。
今回のまとめ
今回は2022年9月の変更点について説明しました。
旧SeleiniumVBA、新SeleniumVBAを使う方がおられると思いますので変数の宣言、インスタンス化の際には参考にしていただければ幸いです。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。各言語における基本的なメソッド一覧も記載されていますのでコードを書く際の参考になります。
SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します
コメント