LoginSignup
1
2

More than 1 year has passed since last update.

AccessのVBAでSeleniumを使ってChrome操作

Last updated at Posted at 2022-11-24

この記事について

『AccessのVBAで初めてSeleniumを使うよ』って状態向け。

  • 環境構築。
  • 『特定サイト開いて検索ボックスに値入れる』という基本的な操作のサンプル。

について書いてるよ。

環境構築

概要

  1. SeleniumBasicのインストール。
  2. Chromeのバージョンに合わせたChromeDriverを特定のフォルダーに置く。

SeleniumBasic

下記サイトからダウンロード。

image.png

image.png

image.png

今回はChromeのみだけど、のちのちFireFoxも使うかもしれないので、全部インストール。
image.png

image.png

image.png

ChromeDriver

ChromeDriverはChromeのメジャーバージョンごとにファイルが異なる。
『Chromedriverのバージョン』と『Chromeのバージョン』が離れすぎているとSeleniumが動かない。

なので、まずChromeのバージョン確認。
image.png

107である。
image.png

下記サイトでダウンロード。

Chromeのメジャーバージョンと同じ107を選ぶ。
image.png

image.png

ダウンロードしたzip内にある『chromedriver.exe』を下記フォルダーに置く。

C:\Users\ユーザー名\AppData\Local\SeleniumBasic

ファイル名にバージョンが含まれていない

あとあと…
この『chromedriver.exe』のバージョンっていくつだっけ?
ってことがよくある。

ChromeDriverのバージョンは控えておくのがおススメ。

ChromeDriverは自動更新されない

Chromeが更新されてもChromeDriverは 自動で更新されない
なので『最新のChromeDriverをダウンロードして差し替える』という手作業のメンテが必要。

ChromeDriverの更新を怠るとChromeの方だけバージョンが上がってしまい、
ある日突然Seleniumが動かなくなる
なーんてことになるので注意。

Access

参照設定

Selenium Type Libraryにチェック入れる。
image.png

ソースコード

ボタンの名前は『btn_execute』。

image.png

Option Compare Database
Option Explicit


'=======================================================================================================================
'WebDriverを関数内で定義すると、関数終了と同時にChromeも終了してしまう。
'『関数終了してもChrome(画面)を残しておきたい』という時はこんなふうに変数を関数外で定義しよう。
'=======================================================================================================================
Dim WEB_DRIVER_ As Selenium.WebDriver


'=======================================================================================================================
'エントリーポイント
'=======================================================================================================================
Private Sub btn_execute_Click()

    Set WEB_DRIVER_ = New Selenium.WebDriver
    
    'Chrome起動
    Call WEB_DRIVER_.Start("chrome")
    
    '3秒待つ
    Call WEB_DRIVER_.Wait(3 * 1000)
    
    'サイト開く
    Call WEB_DRIVER_.Get("https://qiita.com/")
    
    '関数切り分けのサンプル
    Call SendKeyTest
    
End Sub


'=======================================================================================================================
'検索ボックスに値入力
'=======================================================================================================================
Private Function SendKeyTest()

    Dim web_element_ As Selenium.WebElement
    
    '第一引数 = 探すnameの値
    '第二引数 = タイムアウト(1000なら1秒でタイムアウト)
    '第三引数 = 例外をRaiseするかどうか(見つからなかった場合など)
    Set web_element_ = WEB_DRIVER_.FindElementByName("q", 1000, True)
    
    Call web_element_.SendKeys("バーバラちゃん最高!")

End Function

実行結果。
image.png

ログインセッション

『手動で起動したChrome』と『Selenium経由で起動したChrome』とではログインセッションが異なる。

『Selenium経由でChrome操作して、ショッピングサイトの買い物カゴの中身リストアップ』
なんてことをする時は、ショッピングサイトへのログイン処理も作らないといけない。

バージョン

Windows 10 Pro 21H2 OSビルド 19045.2311
SeleniumBasic 2.0.9.0
ChromeDriver 107.0.5304.62
Microsoft Access for Microsoft 365 MSO (バージョン 2209 ビルド 16.0.15726.20188) 32 ビット
Chrome 107.0.5304.107(Official Build) (64 ビット)

1
2
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
1
2