Excel VBA 逆引き集 | Web API の呼び出し

Excel VBA
スポンサーリンク

Web API の呼び出しの基本

業務で「外部システムやWebサービスからデータを取得したい」という場面では Web API呼び出し が必要になります。
Excel VBAでは MSXML2.XMLHTTPWinHttp.WinHttpRequest を使ってHTTP通信を行い、JSONやXML形式のレスポンスを受け取ります。初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Web APIとは?
    Web上のサービスにアクセスしてデータを取得・送信する仕組み。
    例:天気情報API、為替レートAPI、社内システムのREST APIなど。
  • Excel VBAでの流れ:
    1. APIのURLを指定してリクエストを送信
    2. レスポンスを受け取る(JSONやXML)
    3. 必要に応じて解析してシートに展開

テンプレ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で 外部サービスと連携し、データを取得・送信して業務に活用する処理 を簡単に作成できます。

タイトルとURLをコピーしました