見出し画像

VBAでHTTP通信


seleniumを使用しない

VBAでスクレイピングをしようとするとIEを使用するのが簡単で初学者にもわかりやすいが、2022年のIEサポート終了に伴って、chromeやedgeで作り直す必要が出てきた。
ただし、chromeやedge経由でやろうとすると、seleniumをインストールする必要があり、職場でのインストール権限の問題から断念することもあると思う。
今回はseleniumをインストールせずに、HTTP通信でスクレイピングする一例を紹介する。

VBAを使用してHTTP通信を行うには、WinHTTPライブラリを使用することができます。WinHTTPはWindowsに組み込まれており、HTTPリクエストを送信し、レスポンスを受信することができます。

以下は、VBAでWinHTTPを使用してHTTP GETリクエストを送信し、レスポンスを受信する例。

Sub GetHTTP()
    Dim httpRequest As Object
    Dim httpResponse As String
    
    'WinHTTPオブジェクトを作成します
    Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    'HTTP GETリクエストを送信するURLを指定します
    httpRequest.Open "GET", "https://www.example.com", False
    
    'HTTPリクエストを送信し、レスポンスを取得します
    httpRequest.Send
    httpResponse = httpRequest.responseText
    
    'レスポンスを表示します
    MsgBox httpResponse
End Sub


WinHTTPがインストールされていない場合は、以下の手順に従ってインストールすることができます。

  1. ファイルエクスプローラーで「C:\Windows\System32」フォルダを開く

  2. 「winhttp.dll」というファイルを右クリックし、「プロパティ」→「バージョン」タブをクリックし、バージョン情報を確認する。

  3. バージョン6.0以上のWinHTTPがインストールされていない場合は、Microsoftから要ダウンロード

ログイン承認が必要なサイトからzipファイルをダウンロードする

DownloadFileBasicAuthに以下引数を与えることでZipファイルを保存する。
 引数1:ダウンロードするURL
 引数2:Zipファイルを保存する場所
 引数3:認証用ID
 引数4:認証用パスワード
なお、DownloadFileBasicAuth内に変数「AuthUrl」があるが、こちらにはパスワード認証用のURLを設定する。

ここから先は

1,883字

¥ 500

この記事が気に入ったらサポートをしてみませんか?