【Excel】SeleniumVBAがアドイン化されました

# はじめに
TinySeleniumVBAを機能拡張したSeleniumVBAですが、Ver2.0からアドイン化されていました。
アドイン化されたことで、慣れてないとプログラムの組み方が分からない方が出てくるので使用方法を説明をします。

【2025/06/12追記】
今は、6.4版まで上がっています。
※xlam(アドイン)形式のファイルは2024年3月以降、ダウンロードできなくなりました。その代替がxlsmファイルとなります。
xlsmファイルを、必要に応じてアドイン (.xlam) に変更して、別の Excel ワークブックから呼び出せるようにすることもできます。

幾つかの導入方法の説明

https://note.com/sele_chan/n/n61a67c4379de

【2024/09/04追記】
しばらく見ないうちに 5.x版まで上がっていました。今はインストーラが用意されている。

>23 年 8 月にリリースされた 4.4 版からこれが ActiveX DLL で提供されだしたようだ。VBA と互換性のある BASIC コンパイラ twinBASIC で作成されている、との事。このライブラリはインストーラを用いてインストールされる。
https://www.flumen-jp.com/wordpress/index.php/2024/04/30/seleniumvba/


## アドインについて
アドインのメリット・デメリット
>メリット
・一度追加すると、どのブックであっても拡張された機能を使用できる
・ブックに、新規にマクロを追加する必要がない
・拡張機能のon/offを手軽に行える
デメリット
・機能を追加するために、インストールと組み込みが必要
・アンインストールに手間がかかる
・アドインの作成しだいでは不具合が起こる
・Excelの起動に若干時間がかかるようになる
https://excel.syogyoumujou.com/vba/addin.html

アドイン化することで、どのブックであってもSeleniumVBAを使用することが出来ます。
一方でマクロファイルだけの配布ですぐ動かせたのに、アドイン化することで最初だけアドイン設定をしてもらう必要があります。

配布に関しては下記サイトのように、社内であれば共有フォルダにSeleniumVBA.xlamファイルを置いて参照してもらうようにすれば、SeleniumVBAがバージョンアップした際にすぐに反映されます。

https://qiita.com/takeruko/items/173a66904825e2b18993

# 導入方法
## ダウンロード 
下記サイトのSeleniumVBA.xlamリンク先からDownloadボタンをクリックするとzipファイルがダウンロードされます。
SeleniumVBA.xlamアドインを、VBAプロジェクトからアクセスできるフォルダーに解凍してコピーします。

https://github.com/GCuser99/SeleniumVBA/tree/main/dist

## セキュリティ対応
SeleniumVBA.xlamファイルのプロパティにて「許可する」にチェックを付けてください。
これをしないとアドインが入っているのに読み込まれないとハマることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/5b13a846-ec83-5793-3264-f6ecb9fc15b3.png)
[Excel アドインで「有効なアドイン一覧でチェックが入っているのに、アドインが読み込まれない」場合の対応](https://www.excellovers.com/entry/addinnotread01)

## Excelのアドイン登録
ExcelのオプションのアドインからSeleniumVBA.xlamファイルを参照してアドイン登録してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/4e357695-a4c5-81a0-592b-0cd9dbe438bb.png)

## SeleniumVBAの参照
VBAProjectにて、新規で標準モジュールを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/1e88da16-a52e-a057-6503-4c6ce00a03f8.png)
参照設定でSeleniumVBAにチェックを付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/f869a07d-c34d-bff6-6762-4da2c3b18750.png)

:::note warn
SeleniumVBAが参照に出てこない場合、上述したセキュリティ対応のSeleniumVBA.xlamファイルのプロパティにて「許可する」にチェックを付けるてください。
:::

# サンプルプログラム
サンプルプログラムとして、下記サイトの「Googleで検索する際のコード」をアドイン用に書き換えました。

https://powervbadesktop.com/web34/

```vb
Sub sample()
    Dim mngr As SeleniumVBA.WebDriverManager
    Dim driver As SeleniumVBA.WebDriver
    Dim keys As SeleniumVBA.WebKeyboard
    Dim keySeq As String
   
    Set driver = SeleniumVBA.New_WebDriver
    Set keys = SeleniumVBA.New_WebKeyboard
    Set mngr = SeleniumVBA.New_WebDriverManager
    'MsgBox mngr.AlignChromeDriverWithBrowser()
    'MsgBox mngr.AlignEdgeDriverWithBrowser()

    Set driver = SeleniumVBA.New_WebDriver
     
    '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
```

## 記述の変更点
```vb:変更前
Dim driver As New WebDriver
Dim mngr As New WebDriverManager
Dim keys As New WebKeyboard
``` 

1.名前空間として`SeleniumVBA.`を付ける。
2.`New`する場合は接頭辞`New_`を付ける。

```vb:変更後
Dim driver As SeleniumVBA.WebDriver
Dim mngr As SeleniumVBA.WebDriverManager
Dim keys As SeleniumVBA.WebKeyboard

Set driver = SeleniumVBA.New_WebDriver
Set mngr = SeleniumVBA.New_WebDriverManager
Set keys = SeleniumVBA.New_WebKeyboard
``` 

## 実行結果 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/cee0090a-96a7-39b7-bdef-9e698c2cefa2.png)

# 最後に
TinySeleniumVBAの機能拡張したSeleniumVBAですが、開発が活発に行われています。
SeleniumBasicは、2016年で更新が停止されていますしインストールが必要なソフトウェアです。昨今ではセキュリティーの関係でソフトウェアのインストールが出来ない企業が増えています。
このことからもSeleniumBasicに劣らない機能を持っていて、インストール不要なSeleniumVBAに切り替えるようにするといいでしょう。