こんにちは、なかぜんです。
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」などのライブラリを使います。
参照設定方法
- VBE(Visual Basic Editor)を開く
- [ツール] → [参照設定]
- 「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の導入手順
- VBA-JSON(GitHub)から「JsonConverter.bas」をダウンロード
- 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とつながることで一気にクラウド連携の世界が広がります。
ぜひ、業務改善やアプリ開発に役立ててくださいね。
それでは、なかぜんでした!
