スポンサーリンク

AccessでREST APIを叩く実装例(JSON対応)|業務に活かせるVBAテクニック

スポンサーリンク
Access
スポンサーリンク

こんにちは、なかぜんです。
Accessの限界を感じたこと、ありませんか?データはローカルにあるけど、外部サービスと連携したい…そんなときに便利なのが「REST API」との連携です。

「AccessでREST APIって、できるの?」
はい、できます。VBAを使えば、外部のWebサービスにアクセスして、JSON形式でデータをやり取りすることも可能です。

今回は、Access上級者向けに「AccessからREST APIを叩いてJSONを取得・送信する実装方法」を丁寧に解説していきます。業務の幅が一気に広がるテクニック、ぜひ身につけてみましょう!


スポンサーリンク

1. REST APIとは?Accessと連携するメリット

REST APIは、HTTP経由でさまざまなデータやサービスをやり取りできる仕組みです。たとえば、次のような場面で役立ちます:

  • クラウド在庫システムとAccessを連携したい
  • 外部の天気予報サービスからデータを取得したい
  • 社内の別アプリケーションと双方向に情報を交換したい

Accessのデータベース機能+REST APIを組み合わせれば、軽量で柔軟な業務システムが構築できます。

2. 準備:Microsoft XMLライブラリの参照設定

まずは、VBAからHTTPリクエストを行うために、「Microsoft XML, v6.0」などのライブラリを使います。

参照設定方法

  1. VBE(Visual Basic Editor)を開く
  2. [ツール] → [参照設定]
  3. 「Microsoft XML, v6.0」 にチェックを入れてOK

次に、VBAからAPIへアクセスするコードを書いていきます。

3. 実装例:AccessからGETリクエストでJSONを取得

サンプルコード

Public Sub GetJsonFromAPI()
    Dim http As Object
    Dim url As String
    Dim response As String

    ' APIのURL
    url = "https://api.example.com/data"

    ' HTTPオブジェクトの作成
    Set http = CreateObject("MSXML2.XMLHTTP")

    ' GETリクエストの送信
    http.Open "GET", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.send

    ' レスポンスの取得
    response = http.responseText
    Debug.Print response
End Sub

ポイント解説

  • http.Open:HTTPメソッド(GET/POSTなど)とURLを指定
  • setRequestHeader:JSON形式で通信するためのヘッダー設定
  • http.responseText:戻り値(JSON文字列)を取得

取得したJSONは、次に紹介する「解析」処理が必要です。

4. JSONをVBAでパースする方法

VBAには標準でJSON解析機能がないため、Microsoft提供の「JsonConverter.bas」を使います。

JsonConverterの導入手順

  1. VBA-JSON(GitHub)から「JsonConverter.bas」をダウンロード
  2. VBEで[ファイル] → [ファイルのインポート]で読み込む

JSON解析コード例

Dim json As Object
Set json = JsonConverter.ParseJson(response)
Debug.Print json("data")(1)("name") ' ネストされたデータ取得

このように、JSONの階層構造に応じて json("キー") でデータにアクセスできます。

5. POSTリクエストでJSONを送信する方法

サンプルコード

Public Sub PostJsonToAPI()
    Dim http As Object
    Dim url As String
    Dim jsonBody As String

    url = "https://api.example.com/submit"
    jsonBody = "{""id"":123,""name"":""なかぜん""}"

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.send jsonBody

    Debug.Print http.responseText
End Sub

実務での応用例

  • AccessのフォームデータをJSONにして外部送信
  • 基幹システムにリアルタイム連携

6. よくあるミスと注意点

  • ライブラリ参照忘れ(MSXML / JsonConverter)
  • API側がHTTPSで、証明書エラーが発生する
  • JSON構造のミス(文字列のダブルクォーテーション忘れ)
  • API側の認証が必要な場合、ヘッダー追加が必要

認証が必要な場合の例

http.setRequestHeader "Authorization", "Bearer YOUR_API_KEY"

7. 応用ポイント:ループ処理+バルク送信

Accessのテーブルから複数レコードをJSONに変換し、バルク送信する処理も可能です。

Dim rs As DAO.Recordset
Dim dataArray As String
Set rs = CurrentDb.OpenRecordset("T_送信データ")

dataArray = "["

Do Until rs.EOF
    dataArray = dataArray & _
        "{""id"":" & rs!ID & ",""value"":""" & rs!値 & """},"
    rs.MoveNext
Loop

If Right(dataArray, 1) = "," Then
    dataArray = Left(dataArray, Len(dataArray) - 1)
End If

dataArray = dataArray & "]"

これで複数データのJSON配列が生成でき、POSTで送信すれば業務処理の自動化も可能になります。

8. まとめ|Access+REST APIは実務の武器になる!

今回は、AccessからREST APIを利用する方法をご紹介しました。

学べたこと

  • AccessのVBAでHTTP通信する方法
  • JSONを扱うためのライブラリ導入
  • GETとPOSTそれぞれの実装
  • 応用として、複数データの一括送信

次のステップ

  • APIの認証方式(Basic認証・Bearerトークンなど)を実装
  • エラーハンドリングやログ出力の追加
  • API仕様書に基づいた汎用モジュール化

Access単体でも強力ですが、REST APIとつながることで一気にクラウド連携の世界が広がります。
ぜひ、業務改善やアプリ開発に役立ててくださいね。
それでは、なかぜんでした!