Excel VBAで WinHttpRequest オブジェクトを使用して、WebページのHTMLをシンプルに取得するサンプルコードです。HTTP通信の同期実行と文字コード変換の基本的な流れを確認できます。
前提条件
- Windows 環境の Excel (VBA)
- VBEの「ツール」>「参照設定」から
Microsoft WinHTTP Services, version 5.1にチェックを入れること
サンプルコード
Option Explicit
Sub HTML取得()
Dim Http As New WinHttpRequest
Dim URL As String
Dim HTML As String
URL = "https://www.yahoo.co.jp/" ' サンプルURL
With Http
.Open "GET", URL, False ' False = 同期実行
.Send
If .Status <> 200 Then
Err.Raise 5, , "HTML の取得に失敗しました。ステータスコード: " & .Status
Else
' レスポンスボディをShift-JISからUnicodeへ変換
HTML = StrConv(.ResponseBody, vbUnicode, 1041)
Debug.Print HTML
End If
End With
End Sub
コードのポイント
- 早期バインディング:
New WinHttpRequestを利用するため、事前に参照設定が必要です。 - 文字コード変換: レスポンスがバイナリ (
ResponseBody) で返されるため、StrConvを用いて日本語環境向けの文字コードに変換しています。
注意点
対象サイトの常時SSL化(HTTPS)に伴い、URLは https:// を指定してください。また、APIやスクレイピングを行う際は、相手サーバーに負荷をかけないよう適切なウェイトを考慮してください。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月29日
- 変更コードブロックのマークアップを改善し、読みやすさを向上させました。
- 追加WinHttpRequestの前提条件とエラーハンドリングに関する解説を追加しました。
