はじめに
最短でブラウザを動かすまでの手順です。ここでは、Excelを例にお伝えします。
1. マクロブックを信頼する
インターネットからダウンロードしたファイルには Mark of the Web (MOTW) が付きます。次を行ってください。
Excel をすべて閉じる
ファイルを右クリック → プロパティ

許可する にチェック → OK

再度開き、「編集を有効にする」/マクロを許可

詳細な説明はリポジトリの README-jp.md を参照してください。
Access版について
Access版は、VBAをデコンパイルした状態でリリースしています。Excel版と同じCDPContext/WebDriverBiDiContext等のAPIが使えます(WebView2も、Excel/Access自身のウィンドウハンドルを自動判別して埋め込みます)。
2. ブラウザ起動設定シート
ワークシート ブラウザ起動設定ver4.X.X で次を確認します。
| 設定項目 | 説明 |
|---|---|
| ブラウザタイプ | 使用ブラウザ(Chrome / Edge)と、その開発レベル(安定版 / Beta / Dev / Canary)の切り替え。無印は安定版です 後述の「ブラウザexeパス」を記入すると、この項目は空欄になります |
| ブラウザexeパス | 特定のChromiumブラウザ(ポータブル版など)で自動化する場合の、exe名を含むフルパス 空欄に戻すと、ブラウザタイプは既定(Edge)に戻ります |
| ユーザーデータフォルダ名 | user-data-dirに渡すフォルダ名。ブラウザタイプに準拠した標準のディレクトリ配下に保存されますC:\Data\MyProfileのようにドライブ付きのフルパスで書くと、それがそのままブラウザデータ保存先になります(WebView2も同様) |
| 表示ウィンドウモード | 起動時のブラウザ表示モード(ShowWindowのnCmdShowに準拠) |
| WebSocketモード | Pipe / WebSocket 通信の切り替え |
| 追加の起動引数 | 基本は、J15セル以降に記述推奨 |

こだわりがなければシートの初期値のままで問題ありません。
独自ユーザーエージェントの付与(任意)
シートのデバッグ設定にあるユーザーエージェントのスイッチをONにすると、ブラウザ本来のUser-Agentの末尾に、このツールを使用している旨のサインを追記します。HTTPリクエストヘッダーとJavaScriptのnavigator.userAgentの両方に反映されるため、相手サーバーに「このツールからのアクセスである」ことを通達できます。
Mozilla/5.0 ... Chrome/xxx Safari/537.36 Edg/xxx MicrosoftExcel-VBA/7.1 (StarterWebScrapingKit)
└ 追記分(Accessから使う場合は、MicrosoftAccess-VBA/7.1 ...)基本はOFFで問題ありません。自前サーバーのログフィルターなどで識別したいときにONにしてください。CDP / BiDi どちらでも有効です。
注意
一部のiframeは対象外です。
3. Hello World
標準モジュールのデモ、または新規モジュールに次を書いて実行します。
Sub CDPによる冒険の始まり()
Dim HelloWorld As CDPContext
Set HelloWorld = ShSetting01_StartBrowser.StartCDPModeContext
HelloWorld.navigate "https://kemono-friends.jp/"
HelloWorld.notify "あなたは、けものがお好きですか?"
Sleep 3
HelloWorld.ThisCDPBrowser.CloseBrowser
End SubSub BiDiによる冒険の始まり()
Dim HelloWorld As WebDriverBiDiContext
Set HelloWorld = ShSetting01_StartBrowser.StartBiDiModeContext
HelloWorld.navigate "https://example.com"
Sleep 3
HelloWorld.ThisWebDriverBiDiMode.CloseBrowser
End Sub同梱デモ:
Demo_CDP.CDPによる冒険の始まりDemo_WebDriverBiDi.BiDiによる冒険の始まり
起動ヘルパーメソッド
シートオブジェクト:ShSetting01_StartBrowser を利用して少ない引数で直ぐに開始できるヘルパーメソッドです。
下記4種類を用意しております。
| 関数 | 戻り値 | 用途 |
|---|---|---|
StartCDPModeContext | CDPContext | タブ操作からすぐ始めたい(推奨) |
StartCDPMode | CDPBrowser | タブを自分で newTab / getTab したい |
StartBiDiModeContext | WebDriverBiDiContext | BiDi でタブ操作から始める(推奨) |
StartBiDiMode | WebDriverBiDiMode | BiDi でセッション/タブを細かく制御 |
いずれも省略可能な引数:
StartURL— 起動直後に開く URLSwitchUser— 別プロファイル名で起動(マルチインスタンス)
BiDi のみ、追加で sessionCapabilitiesRequest といった初期設定引数を用意しています。必要に応じて事前に Dictionary を組み立て、引数に渡してください。
Pipe の代わりに WebSocket 経由でローカルブラウザを起動・接続したい場合は、ブラウザ起動設定シートの WebSocketモード セルを TRUE にしてください(既定は FALSE = Pipe)。
' `WebSocketモード` セルが TRUE なら、StartCDPModeContext も WebSocket 経由で起動する
Dim t As CDPContext
Set t = ShSetting01_StartBrowser.StartCDPModeContext詳細は WebSocket モードでできること を参照してください。
ヘルパーを使わずに、直接起動する場合
起動時のオプションは、BrowserCapabilities という1つのオブジェクトに集約されています。各設定の既定値は、このワークシートから読み込まれます。シートの内容のままでよければ、たったこれだけで起動できます(ヘルパーも、内部ではこの形で起動しています)。
Dim t As CDPContext
Set t = New CDPContext
t.OpenBrowserAndConnectTab BrowserCapabilities初期 URL など、変えたい設定だけを Set_○○ で上書きします。
BrowserCapabilities.Set_StartURL = "https://example.com"
Dim t As CDPContext
Set t = New CDPContext
t.OpenBrowserAndConnectTab BrowserCapabilitiesBiDi の場合は、WebDriverBiDiContext.OpenBrowserAndConnectTab に同じオブジェクトを渡します。起動済みのブラウザへ再接続する場合は、ReattachOptions を使います(再接続)。
UserForm へのブラウザ埋め込み
「UserForm の中にブラウザ画面を表示したい」場合は、この4種類とは別に UserForm への WebView2 埋め込み を参照してください。v3.0.0 で、 WebView2 をネイティブに CDP 制御できるようになりました。
sessionCapabilitiesRequest とは
BiDi セッション確立コマンド session.new に渡す Parameters です。ブラウザ起動後・コマンド実行前に、「このセッションではどう振る舞うか」を Capabilities として宣言します(WebDriver の Desired Capabilities に相当)。
典型的な形は次のとおりです。
Dim caps As New Dictionary
Dim alwaysMatch As New Dictionary
' 例: 未処理の alert / confirm / prompt を自動で閉じず、イベントで扱う
alwaysMatch.Add "unhandledPromptBehavior", "ignore"
caps.Add "capabilities", New Dictionary
caps("capabilities").Add "alwaysMatch", alwaysMatch
Set t = ShSetting01_StartBrowser.StartBiDiModeContext( _
StartURL:="https://example.com", _
sessionCapabilitiesRequest:=caps)- 省略時は
{ "capabilities": {} }相当の既定値でsession.newします StartBiDiMode/StartBiDiModeContextの両方で使えます- 再接続(
reattach)ではReattachOptions.Set_BiDiSessionCapabilitiesRequestで渡せますが、新規に BiDi-CDP Mapper が起動したときだけ 適用されます
詳細な Capabilities 一覧は W3C WebDriver BiDi — session.new を参照してください。
4. 終了時は必ず CloseBrowser
パイプ/マッパーを残さないよう、処理の最後でブラウザを閉じます。
' CDP
t.ThisCDPBrowser.CloseBrowser
' BiDi
t.ThisWebDriverBiDiMode.CloseBrowser5. Copilotにこのツールの流儀を教える(.Rules シート、v3.1.1〜)
Excel公式のAI機能「Copilot in Excel」には、ブックごとに振る舞いを指示できる.Rulesという特別なシートを作る仕組みがあります。このマクロブックにも.Rulesシートを同梱しており、シート内の所定のフォーマットに沿って書かれた指示を読み込みます。
これにより、Webスクレイピングに関する質問をCopilotに投げたとき、一般的な回答にありがちなSeleniumVBA寄りの提案ではなく、このブックに実装済みのCDP/BiDi制御機能を優先した回答を引き出しやすくなります。

▲ 「このXPathで、VBAで書くには?」という質問に対し、CopilotがgetElementByXPath / onExist / sendKeysなど、本ツール実装済みのAPIを使ったコードをそのまま提案してくれている様子
IMPORTANT
Copilot in Excelの機能そのものがExcel専用のため、Accessは非対応です。

