Web API の呼び出しの基本
業務で「外部システムやWebサービスからデータを取得したい」という場面では Web API呼び出し が必要になります。
Excel VBAでは MSXML2.XMLHTTP や WinHttp.WinHttpRequest を使ってHTTP通信を行い、JSONやXML形式のレスポンスを受け取ります。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Web APIとは?
Web上のサービスにアクセスしてデータを取得・送信する仕組み。
例:天気情報API、為替レートAPI、社内システムのREST APIなど。 - Excel VBAでの流れ:
- APIのURLを指定してリクエストを送信
- レスポンスを受け取る(JSONやXML)
- 必要に応じて解析してシートに展開
テンプレ1:GETリクエストでデータ取得
Sub CallAPI_GET()
Dim http As Object
Dim url As String
Dim response As String
' APIのURL(例:ダミーのJSON API)
url = "https://jsonplaceholder.typicode.com/posts/1"
' HTTPオブジェクト作成
Set http = CreateObject("MSXML2.XMLHTTP")
' GETリクエスト送信
http.Open "GET", url, False
http.Send
' レスポンス取得
response = http.responseText
' 結果を表示
MsgBox response
End Sub
VB- ポイント:
Open "GET", url, Falseで同期リクエスト。responseTextにJSON文字列が入る。
テンプレ2:POSTリクエストでデータ送信
Sub CallAPI_POST()
Dim http As Object
Dim url As String
Dim response As String
Dim postData As String
url = "https://jsonplaceholder.typicode.com/posts"
postData = "{""title"":""テスト"",""body"":""本文"",""userId"":1}"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.Send postData
response = http.responseText
MsgBox response
End Sub
VB- ポイント:
setRequestHeaderで送信形式を指定。- JSON文字列をPOSTで送信。
テンプレ3:レスポンス(JSON)を解析してシートに展開
※事前に「VBA JSON」ライブラリ(JsonConverter.bas)を導入しておくと便利。
Sub CallAPI_ParseJSON()
Dim http As Object
Dim url As String
Dim response As String
Dim Json As Object
url = "https://jsonplaceholder.typicode.com/users/1"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
response = http.responseText
' JSON解析
Set Json = JsonConverter.ParseJson(response)
' シートに展開
Dim ws As Worksheet: Set ws = Worksheets("Data")
ws.Cells.Clear
ws.Range("A1").Value = "名前"
ws.Range("B1").Value = "メール"
ws.Range("A2").Value = Json("name")
ws.Range("B2").Value = Json("email")
MsgBox "APIデータをシートに展開しました!"
End Sub
VB- ポイント:
ParseJsonでJSONをDictionaryに変換。- キー指定で値を取り出せる。
テンプレ4:エラーハンドリング付きAPI呼び出し
Sub CallAPI_WithError()
Dim http As Object
Dim url As String
url = "https://jsonplaceholder.typicode.com/invalid"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
If http.Status = 200 Then
MsgBox "成功: " & http.responseText
Else
MsgBox "エラー: " & http.Status & " " & http.statusText
End If
End Sub
VB- ポイント:
http.StatusでHTTPステータスコードを確認。- 200なら成功、それ以外はエラー。
例題で練習
'例1:GETリクエストでデータ取得
'例2:POSTリクエストでデータ送信
'例3:JSONレスポンスを解析してシートに展開
'例4:エラーハンドリング付きAPI呼び出し
VB初心者向けポイント
- MSXML2.XMLHTTPを使うのが基本 → VBAでHTTP通信を行う。
- GETはデータ取得、POSTはデータ送信 → 使い分ける。
- レスポンスはJSONやXML形式 → JSONならライブラリを使うと便利。
- ステータスコードを確認してエラー処理 → 実務では必須。
- シートに展開すると業務で使いやすい → API連携の定番パターン。
👉 この「Web API呼び出しテンプレ」を覚えておけば、Excel VBAで 外部サービスと連携し、データを取得・送信して業務に活用する処理 を簡単に作成できます。
