0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SeleniumVBA】最速の導入・運用手順(2025年1月)

Last updated at Posted at 2024-12-29

1 はじめに

説明はExcelVBAの操作をある程度行っている方向け。初めての方はこちらを参照

SeleniumBasicとの比較
【メリット】
・インストール不要のため共同作業が容易
・WebDriver自動更新機能が標準装備
・バージョンアップ、バグフィックスへの対応
【デメリット】
・参考記事が少なく、未更新が多い
⇒私が経験した事をnote記事に書きまくりました

2 SeleniumVBA.xlsmのダウンロード

こちらからファイルを直接ダウンロード

本記事執筆時点の最新バージョンは6.2
xlam(アドイン)形式のファイルは2024年3月以降、提供停止

3 セキュリティの設定

・「SeleniumVBA.xlsm」アイコン右クリック ⇒ 「プロパティ」 ⇒ 「許可する」
・「開発」タブ ⇒ 「Visual Basic」ボタン ⇒ 「ツール」⇒ 「オプション」
・「編集」タブ ⇒ 「変数の宣言を強制する」にチェック
・「全般」タブ ⇒ エラーオプション「エラー処理対象外のエラーで中断」

4 動作確認

「SeleniumVBA.xlsm」内の標準モジュール「test_ActionChains」を実行し、Edgeが起動して画面が動いていればOK

Chrome利用はコードを「Driver.StartEdge」⇒「Driver.StartChrome」にして実行

5 運用

個人での使用は「SeleniumVBA.xlsm」で運用。配布する場合はこちらを参照
個人運用時は、新規に標準モジュールを作成してコードを記述。ワークシートにはデータ入出力および実行ボタンを作成して運用

6 公式Wiki及びサンプルコード

公式Wikiページはこちら。困った時はDicussionで質問することも可
英語なので下記にSeleniumVBAでGoogle翻訳を使用できるコードを掲載

「test_」で始まる標準モジュールには、多くのサンプルコードが掲載

7 参考記事

私が実務で経験したノウハウをnote記事に掲載

8 ここからは苦労話

一般事務員しかいない弊社の環境では、以前までセキュリティソフトの設定等によりWebDriverの自動ダウンロードができずに下記画面のようなエラーが出ていました。

1734557353-oib8GRA2YCDgaLBrk4H1FcKf.png

このままでは、WebDriverの更新頻度が1か月に1回程度あるため、その環境で継続運用することは困難となってしまいます。

ただ、手動でChromeを起動してURLを直接打ち込むとダウンロードできることから、完全にはブロックされていないと判断して、暫定的に独自に以下のコードによりクラスモジュール「WebDriverManager」の一部を改変して自動ダウンロードできるようにしていました。

VBA
*************************************************************************************************
'【改変コード】(Chrome限定。動作保証はありません)
'「UrlDownloadToFile」が動作しないが、Chromeを起動してURLを直接打ち込むとダウンロードできる場合に有効
’クラスモジュール「WebDriverManager」プロシージャ「DownloadAndInstallDriver」のうち「UrlDownloadToFile」以降から「End Sub」まで改変
'*************************************************************************************************
    'i-Filterが原因でUrlDownloadToFileが動作しないためコメント化
    'UrlDownloadToFile 0&, StrPtr(Url), StrPtr(tmpInstallZipPath), 0&, 0&
    'make sure driver zip file was created successfully
    If Not fso.FileExists(tmpInstallZipPath) Then
    'Chromeを立ち上げてzipファイルをdownload直下に保存する
     Dim Ch As Variant
     Set Ch = CreateObject("WScript.Shell")
     Ch.Run ("chrome.exe -url " & Url)
    'dawnload完了まで待つ
     Dim i As Long
     Do Until fso.FileExists(driverFolder & "\" & "chromedriver-" & platformString & ".zip")
       If i <= 20 Then '20秒以内の場合
         sleep 1000    '1秒待つ
         i = i + 1
       Else
         AppActivate Application.caption
         MsgBox "WEBドライバのファイルが指定フォルダに格納されていません" & Chr(10) & _
                "以下のとおり対処してください" & Chr(10) & _
                "1 Chromeの「設定」-「ダウンロード」の画面から" & Chr(10) & _
                "  ①保存先を「ダウンロード」フォルダ直下に変更" & Chr(10) & _
                "  ②「ダウンロード前に各ファイルの保存場所を確認する」をoff" & Chr(10) & _
                "2 設定完了後、OKボタンでExcel画面に戻って再試行する", vbCritical + vbOKOnly
         End
      End If
     Loop
     'Chromeを終了する
     Set Ch = Nothing
     'zipファイルをdownload直下からtmpフォルダに移動する
     fso.MoveFile driverFolder & "\" & "chromedriver-" & platformString & ".zip", tmpInstallFolder
    End If
    If fso.FileExists(tmpInstallDriverpath) Then fso.DeleteFile tmpInstallDriverpath, True
    shll.Namespace(tmpInstallFolder).CopyHere shll.Namespace(tmpInstallZipPath).Items.Item(tmpZipDriverFilename)
    'check if driver exists and if it does, make sure it isn't in use before overwrite
    If fso.FileExists(driverPath) Then
        If isProcessRunning(driverFileName) Then taskKillByImage (driverFileName): WebShared.SleepWinAPI 100
    End If
    'copy file from temp folder to driver path
    fso.CopyFile tmpInstallDriverpath, driverPath, True
    'if created tmp folder, then delete it
    If Dir(tmpInstallFolder) <> "" Then fso.DeleteFolder Left$(tmpInstallFolder, Len(tmpInstallFolder) - 1), True
'*************************************************************************************************
'改変箇所 ここまで
'*************************************************************************************************
End Sub

上記コードはChrome限定(Edge版の書き換えは可能と思われます)であり動作保証はありませんので、自己責任での御利用でお願いします。

理由は不明ですが、現在は標準状態でもダウンロードできるようになりましたので、上記コードは使用していません。もし他の方に役に立つことがあればと思い、掲載しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?