さて、IEサポート終了まで1ヶ月をきりました。
業務上使用しているIE制御関連のツールをどう代替するか…なんてことを考えています。
どうやらCOMシナリオ(VBAによるIE呼び出しての制御)は引き続き動くらしいです。
まあだからといってそのままCOMシナリオを使っていていつ使えるなくなるかも分かりませんので、代替手段を用意して恒久的な対応をしておいた方が良いのは明白ですが。
blogs.windows.com
COM シナリオは、2022 年 6 月 15 日以降に IE11 デスクトップ アプリケーションが無効化された後も引き続き機能します。上記の更新プログラムのインストール後も問題が発生する場合は、App Assure に連絡して修復サポートを受けてください。
IEサポート終了に伴う代替手段
個人的には下記が候補かなと考えています。
- TinySelenium
- SeleniumBasic
- WebDriver直操作
- PowerAutomateDesktop
TinySelenium
Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応
有名な(?)こちらの本の作者様が作ってくれたツールです。
こちらを活用する事で、新たにインストール等をせずとも素のVBAと対応するWebDriverでブラウザの制御ができるという素晴らしいツールです。
エクセルが入っている環境があれば使用できるという何者にも代えがたい素晴らしいメリットがあるので、
配布する場合などはこちらが良いのかなと思います。
github.com
qiita.com
SeleniumBasic
2016年3月を最後に更新されていません。
ただ、こちらをインストールして適切な設定を行うとVBAでの開発が容易に行えるようです。
いろんな制御ができるようなので、環境依存にはなってしまいますが開発速度考えた場合これなのかなと。
環境依存と言っても、SeleniumBasic入れれば良いだけなので。
github.com
PowerAutomateDesktop
Microsoft謹製のRPAツールです。
有象無象にある鬼のように高いライセンス料金が必要なものもある世に出ているRPAツールと同等でなおかつ無償使用できるのでRPAツールを使うのならこれかなと。
ただ、ちょっと使ってみた感じ動作速度が遅かったりライセンス契約しないとスケジュール実行ができない(?)ようなので、そこがデメリットなのかなと。
サードのRPAツール使うくらいならこちらのほうが良いんじゃなかろうか…なんて素人ながらに思いました。
とりあえずVBAをヘビーユースしている人間なのでSeleniumBasicをインストールする
SeleniumBasicにします!!
TinySeleniumと悩みましたがTinySeleniumは必要最低限の処理…との事なので、組んでいく中でやりたい事ができなくなる可能性が高い。
安牌を取りました。
SeleniumBasicのセットアップ
Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub
こちらからエグゼファイルをダウンロード。
ダウンロードが終わったらエグゼファイルをダブルクリックしてインストール。
とりあえず次へで進めていけばOK。
GoogleChromeを立ち上げてバージョンを確認。
ヘルプ -> バージョンを確認より。
ChromeDriver - WebDriver for Chrome - Downloads
対応するWebDriverのWinのものをダウンロード。
※GoogleChromeがVer『101』なので同じものを。
ダウンロードしたZipを解凍して
『chromedriver.exe』を切り取る。
たぶんデフォルトだとこのフォルダにあると思うので探す。
で、このフォルダに先程切り取ったファイルを貼り付けて『chromedriver.exe』を上書き。
このフォルダにある、『StartChrome.vbs』というファイルをダブルクリックする。
「Click OK to quit」と表示されれば問題ないが、「.NetFrameworkインストールウィザード」が表示される環境もあるのでその場合はインストール。
※.NetFrameworkをインストールしないと、実際にコーディングして実行した時に「オートメーションエラーです。」と表示され動かないので必ず。
これで環境は準備は整ったで、次はChromeを自動操作するためのエクセルファイルの設定します。
テストコード
Option Explicit 'メモ参照設定『Microsoft Scripting Runtime』『Selenium Type Library』 Sub hogehoge() Dim i As Long Dim driChrome As New ChromeDriver driChrome.Start 'はてなを開く driChrome.Get "https://www.hatena.ne.jp/" 'はてなで話題のエントリー 上から1,2,3を開く driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[1]/article/div[1]/h3").Click driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[2]/article/div[1]/h3").Click driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[3]/article/div[1]/h3").Click 'Yahooを開く driChrome.Get "https://www.yahoo.co.jp/" '検索フィールドにテキスト入力 driChrome.FindElementByXPath("//*[@id=""ContentWrapper""]/header/section[1]/div/form/fieldset/span/input").SendKeys ("test") '検索をクリック driChrome.FindElementByXPath("//*[@id=""ContentWrapper""]/header/section[1]/div/form/fieldset/span/button").Click '処理ストップ Stop End Sub
実行するとこんな画面になったんじゃないかなと思います。
「Chrome は自動テスト ソフトウェアによって制御されています。」と表示されて、Yahooは[test]を検索し、はてなの話題エントリが3つ開いている状態。
ちょっと触っただけでこれだけできるのでもう本当に素晴らしい…。
ブラウザの読み込み待ちもデフォルトでしてくれるようになっているようで、かなり使いやすいです。
COMでやっているIEの処理を順次入替えていきたいと思います!!(`・ω・´)