Excel VBA 逆引き集 | REST APIのPOST

Excel VBA
スポンサーリンク

REST API の POST 呼び出し

Excel VBAで「外部サービスにデータを送信したい」ときに使うのが REST API の POST リクエスト です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • POSTリクエストとは?
    Web APIにデータを送信する方法。フォーム入力やシートの値を外部システムに登録する際に使う。
  • 特徴:
    • URLに送信先を指定
    • リクエスト本文(Body)にデータを入れる
    • JSONやXML形式で送信するのが一般的

テンプレ1:シンプルなPOSTリクエスト(JSON送信)

Sub RestAPI_POST_Basic()
    Dim http As Object
    Dim url As String
    Dim postData As String
    Dim response As String
    
    ' APIのURL(例:ダミーのJSON API)
    url = "https://jsonplaceholder.typicode.com/posts"
    
    ' 送信するJSONデータ
    postData = "{""title"":""テスト"",""body"":""本文"",""userId"":1}"
    
    ' HTTPオブジェクト作成
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    ' POSTリクエスト送信
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send postData
    
    ' レスポンス取得
    response = http.responseText
    
    MsgBox "レスポンス: " & response
End Sub
VB
  • ポイント:
    • setRequestHeader "Content-Type", "application/json" で送信形式を指定。
    • http.Send postData でJSONを送信。

テンプレ2:シートのデータをPOST送信

シート「Data」に以下の表があると仮定:

名前年齢住所
山田太郎30東京都江東区

コード例:

Sub RestAPI_POST_FromSheet()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim http As Object
    Dim url As String
    Dim postData As String
    
    url = "https://jsonplaceholder.typicode.com/users"
    
    ' シートの値をJSONに変換
    postData = "{""name"":""" & ws.Range("A2").Value & """,""age"":" & ws.Range("B2").Value & ",""address"":""" & ws.Range("C2").Value & """}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send postData
    
    MsgBox "送信完了!レスポンス: " & http.responseText
End Sub
VB
  • ポイント:
    • シートの値を文字列連結でJSONに組み立て。
    • 実務で「ExcelからAPIに登録」する場面に便利。

テンプレ3:フォーム入力をPOST送信

UserFormに TextBox1(氏名)TextBox2(年齢)TextBox3(住所)CommandButton1(送信ボタン) を配置。

Private Sub CommandButton1_Click()
    Dim http As Object
    Dim url As String
    Dim postData As String
    
    url = "https://jsonplaceholder.typicode.com/users"
    
    ' フォーム入力をJSONに変換
    postData = "{""name"":""" & TextBox1.Value & """,""age"":" & TextBox2.Value & ",""address"":""" & TextBox3.Value & """}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send postData
    
    MsgBox "送信完了!レスポンス: " & http.responseText
End Sub
VB
  • ポイント:
    • フォーム入力をそのままJSONに変換して送信。
    • データ登録フォームをAPI連携できる。

テンプレ4:エラーハンドリング付きPOST

Sub RestAPI_POST_WithError()
    Dim http As Object
    Dim url 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
    
    If http.Status = 201 Then
        MsgBox "成功: " & http.responseText
    Else
        MsgBox "エラー: " & http.Status & " " & http.statusText
    End If
End Sub
VB
  • ポイント:
    • POST成功時は通常「201 Created」が返る。
    • ステータスコードを確認してエラー処理。

例題で練習

'例1:シンプルなPOSTリクエスト
'例2:シートのデータをPOST送信
'例3:フォーム入力をPOST送信
'例4:エラーハンドリング付きPOST
VB

初心者向けポイント

  • POSTは「データ送信」専用 → GETは取得、POSTは登録。
  • JSON形式で送信するのが一般的Content-Type を必ず指定。
  • シートやフォームの値をJSONに変換して送信 → 実務でよく使う。
  • ステータスコードを確認してエラー処理 → 201なら成功。
  • レスポンスをシートに展開すれば確認しやすい → API連携の定番パターン。

👉 この「REST API POSTテンプレ」を覚えておけば、Excel VBAで 外部サービスにデータを送信し、業務システムと連携する処理 を簡単に作成できます。

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