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で 外部サービスにデータを送信し、業務システムと連携する処理 を簡単に作成できます。
