msedge.exe を UserForm に直接埋め込む
v3.0.0で廃止済みの手法です
本ページの手法(KioskMode引数・EdgeInExcelForm)は、v3.0.0で本キットが真のWebView2をネイティブ実装したことに伴い、コードベースから削除されています。以下は当時の設計・トレードオフの記録として残しています。今から埋め込みたい方は Excel 単体(Lv.99) を参照してください。
WebView2は、極端な話、Edgeから、URLバーやウィンドウ枠がない状態にしたものみたいなもの。
実はある引数を足してちょこっと簡単なAPIを使えば簡単に実現可能だ。
皆さんのPCに入っている Microsoft Edge(msedge.exe)そのもの を、UserFormに埋め込んでしまう力技です。
見た目は完全に WebView2 コントロール。しかも外部ツール一切不要です。

▲ Google ページが UserForm 内に表示された様子。アドレスバーなし・タブなし = 完全 WebView2 ルック
構成と処理の流れ
Excel と Edge だけで完結する、非常にシンプルでスマートな方式です。
Excel (VBA) ↔ CDP via Pipe(標準入出力パイプ) ↔ Edge.exeWebSocket も Node.js も不要。VBA ↔ ブラウザの2者間だけで完全に完結します。
実装のポイント
Edge 起動時に、以下の起動引数を付与するのがキモです:
--remote-debugging-pipe --kiosk| 引数 | 効果 |
|---|---|
--remote-debugging-pipe | 標準入出力パイプ経由でCDPコマンドを送受信。ポートを開かないため、ネットワーク制限環境でも安全 |
--kiosk | アドレスバー・タブ・ウィンドウ枠が消滅。見た目が完全にWebView2コントロールに |
その後、VBAの Windows API を使ってEdgeのウィンドウハンドルを取得し、UserFormの子ウィンドウとして強引に取り込みます。開通したパイプ経由でCDP-JSONコマンドを流し込むことで、スクレイピングや画面操作が可能です。
v2.x系の本キットでは KioskMode:=fullscreen などで同等の起動を行っていました(設定シート/StartCDPModeContext)。v3.0.0でこの引数自体が削除されているため、以下のデモコードは現行バージョンでは動作しません。
デモコードの動作内容
TIP
デモでは最初に このツールのGitHubページ が表示されます。
UserForm上部のURLテキストボックスに任意のURL(例:https://www.google.com)を入力してEnterを押すと、ページ遷移できることが確認できます。
Demoコードを見る(ExcelのユーザーフォームにEdgeを埋め込む)
Sub ExcelのユーザーフォームにEdgeを埋め込む()
'1. CDPでEdgeを起動(Kioskモード = ウィンドウ枠なし)
Dim 実質WebView2 As CDPContext
Set 実質WebView2 = ShSetting01_StartBrowser.StartCDPModeContext(KioskMode:=fullscreen)
実質WebView2.navigate "https://github.com/Eschamali/StarterWebScrapingKit"
'2. フォームをロード(まだ表示はしない)
Load EdgeInExcelForm
'3. 誘拐(ドッキング)処理を実行させる!
実質WebView2.InheritanceCDPCore.sleep
If Not (EdgeInExcelForm.AttachEdge(実質WebView2)) Then
MsgBox "Edgeのハンドル情報の取得に失敗しました", vbCritical
Exit Sub
End If
'4. フォームを表示
EdgeInExcelForm.show
'5. ブラウザを正常に閉じる
実質WebView2.ThisCDPBrowser.quit
End Sub同梱デモ: Demo_CDP.ExcelのユーザーフォームにEdgeを埋め込む
デメリット:入力フォーカス問題
フォーカスが正しく当たらない問題があります
VBAの UserForm_Activate イベントは、UserForm同士の切り替えでしか動作しません。
そのため、他のWindowsアプリからUserForm(の中にあるEdge)にフォーカスを戻した際、正しくフォーカスが当たらないことがあります。
現状は「特定領域にマウスを当てて強制的にフォーカス処理を走らせる」という泥臭い工夫で対処しています。

