ExcelのVBAからEdgeやChromeを操作する方法(その1:初期設定)

ExcelのVBAからEdgeやChromeを操作する方法(その1:初期設定)

Posted at June 23,2023 11:55 PM
Tag:[Edge]

ExcelのVBAからEdgeやChromeを操作する方法を紹介します。

「その1」は、VBAの設定と、ブラウザ(Edge)が開くまでの手順を紹介します。

1.はじめに

以前、「iMacros」を使ってブラウザを操作する方法を紹介しましたが、VBAからGoogleChromeやEdgeを操作する方法をみつけたので何回かに分けて紹介したいと思います。

VBAを利用することで、ブラウザ上のフォームデータの入力やを送信もできるようです。

今回は下記の記事前半の手順を詳しく説明したものです。

Excel VBAでSeleniumBasicを使わずにスクレイピングする

2.Microsoft Edge WebDriverのダウンロード

Microsoft Edge WebDriverのサイトにアクセスして、少し下にある「最新バージョン」から、該当のEdgeバージョンのドライバをダウンロードします。

Edgeのバージョンの確認は、ブラウザ右側にある設定アイコンをクリックして、「ヘルプとフィードバック」→「Microsoft Edgeについて」をクリック。

(クリックで拡大、以下同様)
Microsoft Edgeについて

次の画面でバージョン「114.0.1823.58」が表示されました。

バージョン

さきほどアクセスしたサイトから、これと同じバージョンの該当OSのリンクをクリックしてダウンロード。私が使っているPCはWindowsの64bitなので、ここでは「x64」をクリックしています。

同じバージョンの該当OSのリンク

ダウンロードしたアーカイブを展開して、中にmsedgedriver.exeがあることを確認します(あとで利用します)。

Chromeで利用したい場合は、ChromeDriverのサイトからダウンロードしてください。

こちらもバージョンが一致している必要があります。

3.VBA-JSONのダウンロード

VBA-JSONのサイトにアクセスして、「Source code(zip)」または「Source code(tar.gz)」をクリックしてダウンロードします。

VBA-JSON

ダウンロードしたアーカイブを展開して、中にJsonConverter.basがあることを確認します(あとで利用します)。

4.VBAの設定

メニューにマクロが表示されていない場合は、まずメニューの表示設定をします。

・「ファイル」→「オプション」をクリックして開いた画面の「クイックアクセスツールバー」をクリック。
・左側のリストから「マクロ[マクロの表示]」をクリックして「追加」をクリックし、「OK」をクリック。
→バーにマクロのアイコンが表示される

メニューの表示設定

ここからが本題です。

「表示」タブの「マクロ」→「マクロの表示」をクリック。

マクロの表示

画面が開くので、マクロの名前に任意の名称(ここでは「test」)を入力して「作成」をクリック。

マクロの作成

「Visual Basic Editor」が開きます。

Visual Basic Editor

プロジェクト・エクスプローラ上のツリーから[VBAProject(ファイル名)]を右クリックして、表示されたコンテキスト・メニューから[ファイルのインポート]を選択

ファイルのインポート

[ファイルのインポート]ダイアログが開くので、「JsonConverter.bas」を選択し[開く]ボタンをクリック。

「JsonConverter.bas」を選択

これで、プロジェクト・エクスプローラのツリーにもインポートしたモジュールが追加されます。

モジュールが追加

続いて、連想配列を扱うDictionary型を利用するための設定を行います。

VBEのメニューバーの「ツール」→「参照設定」をクリック。

参照設定

「Microsoft Scripting Runtime」にチェックを入れて「OK」をクリック。

Microsoft Scripting Runtime

5.VBAにコード設定

関数「test」の中に、下記のコードを設定します。赤字の「C:\tmp\edgedriver_win64\msedgedriver.exe」には、2項でダウンロードしたmsedgedriver.exeをフルパスで指定してください。

Chromeの場合は「chromedriver.exe」を設定します。

Sub test()
 
    ' WebDriverの起動。デフォルトで9515番ポートを監視
    Shell "C:\tmp\edgedriver_win64\msedgedriver.exe", vbMinimizedNoFocus
 
    ' ブラウザ起動パラメータの作成
    Dim params As New Dictionary
    params.Add "capabilities", New Dictionary
    params.Add "desiredCapabilities", Nothing
 
    ' HTTPクライアントの起動
    Dim client As Object
    Set client = CreateObject("MSXML2.ServerXMLHTTP")
 
    ' 指示の送信
    client.Open "POST", "http://localhost:9515/session"
    client.setRequestHeader "Content-Type", "application/json"
    client.send JsonConverter.ConvertToJson(params)
 
    ' 送信完了待ち
    Do While client.readyState < 4
        DoEvents
    Loop
End Sub

実際の画面での追加は下記のようになります。

VBAにコード設定

6.実行

「実行」→「Sub/ユーザーフォームの実行」をクリック。

実行

EdgeまたはChromeが起動して、真っ白なページが表示されれば設定完了です。

Edge起動

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)