やりたいこと
VBAでSeleniumを使ってChromeを操作するとき、
VBAのコード実行が完了すると、Chromeが勝手に閉じてしまう。
これを閉じずにVBAコードを終わりたい。
そうすれば、下図のように別の作業を手作業で挟むことができる。
サンプルコード
以下サンプルです。
前提として、SeleniumBasic、ChromeDriverはインストール済み、参照設定でSelenium Type Libraryを設定済みとします。
ここで重要なのが、1行目でSubの外でDriverを宣言している点です。
こうすることで、Subが終了してもブラウザが消えません。
ただし、いつまでもDriverが残ることになるため、本当に処理を終了するときには
Driver.Quitを入れないと、次回実行時にエラーがでます。
Private Driver As New Selenium.ChromeDriver
'最初に実行するVBA
Sub Macro1()
'古いDriverが残っているとエラーになるのできれいにする
If Not Driver Is Nothing Then
Driver.Quit
Set Driver = Nothing
End If
'Driverでどこかにアクセスして、何か作業があれば作業させる。
Driver.Get "https://google.com"
'一旦VBA1はおわり。
'ブラウザは開いたままなので、このあと人間の手作業をはさむ。
End Sub
'ここで、人間が手作業する。(例えば何か検索してください)
'手作業が終わったら、次のMacro2を実行することもできる。
Sub Macro2()
'Driverを引き継いで、別の作業をさせる(例:検索結果の1番上のテキストをプリント)
Debug.Print Driver.FindElementsByClass("MjjYud")(1).Text
'ブラウザ終了
Driver.Quit
End Sub
おわり
以上です。お疲れ様でした。