Selenium Basicを使って、Excel VBAからEdgeを操作する


目的

Windows7のサポートが切れる。即ちIEの死期が近づく。即ちIEを使っているExcelVBAの死期が近づく。

・・・・

そうだ。Edgeを操作しよう!

ExcelVBAもさっさと死んでPython標準搭載になってくれ

準備

Selenium Basicのインストール

Selenium Basicをインストールする。怪しいソフトはインストールできない?諦めよう。

執筆時点ではv2.0.9.0が最新だった。
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0

EdgeDriverの更新

最新のEdgeDriverを入れないと動かなくなるぞ!
C:\Users\?ユーザー名?\AppData\Local\SeleniumBasic\Scriptsの中にedgedriver.exeってのがあるので、最新版と差し替える。
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

.NetFramework3.5のインストール

C:\Users\?ユーザー名?\AppData\Local\SeleniumBasic\Scriptsの中にある、StartEdge.vbsをダブルクリックすればインストールできる。わかる人はWindowsの機能の有効化または無効化から追加してもよい。でもユーザに説明するのメンドイからおとなしくvbsクリックさせよう。

グループポリシーでvbsが実行できない?Windowsの機能の有効化または無効化の方法をアナウンスするか諦めよう。

参照設定の追加

Visual Basic Editorを開いて、参照設定からSelenium Type Libraryを追加する。
もしそんなもんねぇよ!っていう人は、SeleniumBasicをインストールした後に、再起動してみよう。
(自分の場合はExcel再起動で出てきた)

実装

Option Explicit

Public Sub Main()
    Dim driver As Selenium.EdgeDriver
    Set driver = New Selenium.EdgeDriver

    With driver
        .Start
        .Get "https://www.google.com/"
        .FindElementByName("q").SendKeys ("テスト検索なんだぜ")
        .FindElementById("tsf").submit
        Debug.Print .FindElementById("resultStats").Text
        .Quit
    End With


End Sub

出力

約 24,400,000 件 (0.33 秒) 

ね、簡単でしょ。

SI的結論

.NetFramework3.5をインストールしなきゃいけない
⇒基本これを求めるところはふるーい資産大好きなのでデフォで入ってそう

EdgeDriverの更新が必要
⇒どれくらいの頻度あるかしらんけどWSUSでパッチ配信作業があるたびに検証しなきゃいけないの?無理ぽぉ。動かなくなった!っていうクレームもうざそう

Selenium Basicいれなきゃいけない
⇒それならちゃんとした環境整えるね。

あきらめよう

抜け道

Selenium.IEDriverっちゅうのもある。
これでIEが操作できるZo!
IEが死んでもオブジェクト差し替えるだけなので、まぁ既存のを使い続けるよりは安全かも?いや目糞鼻くそか…。