こんにちは、なかぜんです。
「AccessのデータをGoogleスプレッドシートに連携したいけど、どうやってAPIを使えばいいの?」
そんな悩みを抱えている方、多いのではないでしょうか?
実は、Google Sheets APIとAccess(VBA)を使えば、業務レポートや共有資料をクラウドで自動更新できる仕組みを作れます。
今回は、GoogleスプレッドシートとAccessを連携するためのステップを、実際のコード付きでやさしく解説します!
GoogleスプレッドシートとAccessをつなげる準備
1. Google APIの有効化と認証情報の作成
- Google Cloud Console にアクセス(https://console.cloud.google.com/)
- 新しいプロジェクトを作成
- 「Google Sheets API」を有効化
- 「OAuth 2.0クライアントID」を作成(デスクトップアプリを選択)
- クライアントIDとシークレットを取得
※スプレッドシートの共有設定で「編集可能」にし、
認証ユーザーに編集権限を付与するのもお忘れなく!
2. 必要なライブラリの導入(WinHttp + JSON)
Access VBA では以下を使って通信とデータ処理を行います。
- Microsoft WinHTTP Services, version 5.1
- VBA-JSON(GitHubからダウンロード)
VBAコードでGoogleスプレッドシートにデータを書き込む
サンプル:Accessのテーブルデータを1行ずつ書き込み
Sub ExportToGoogleSheet()
Dim http As Object
Dim JsonConverter As Object
Dim AccessData As DAO.Recordset
Dim SheetID As String
Dim AccessToken As String
Dim PostData As String
Dim URL As String
' スプレッドシートID(URLから抜粋)
SheetID = "あなたのスプレッドシートID"
' 取得済みのアクセストークンを設定(OAuth認証が別途必要)
AccessToken = "取得したアクセストークン"
' 送信先のURL
URL = "https://sheets.googleapis.com/v4/spreadsheets/" & SheetID & "/values/シート1!A1:append?valueInputOption=RAW"
' Accessテーブルからレコードセットを取得
Set AccessData = CurrentDb.OpenRecordset("T_顧客マスタ")
Do Until AccessData.EOF
' JSON形式でデータを構成(1行ずつ)
PostData = "{""values"":[[""" & AccessData!顧客名 & """,""" & AccessData!電話番号 & """]]}"
' HTTP POST送信
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "POST", URL, False
http.SetRequestHeader "Authorization", "Bearer " & AccessToken
http.SetRequestHeader "Content-Type", "application/json"
http.Send PostData
AccessData.MoveNext
Loop
AccessData.Close
Set AccessData = Nothing
MsgBox "データ送信完了しました!", vbInformation
End Sub
コードのポイント解説
- WinHttpを使ってHTTPS通信を実行しています。
- Accessテーブルのデータを1件ずつJSONに変換し、POSTでGoogle Sheetsに送信しています。
- valueInputOption=RAW によってセルにそのままの文字列で入力されます。
注意点やよくあるミス
- アクセストークンの有効期限切れ → 毎回更新するか、RefreshToken処理を実装しましょう
- API制限(Quota)→ 1日10万リクエストが上限、ループでの大量書き込みは要注意
- スプレッドシートのIDや範囲(A1など)が正しいか確認を
- VBA-JSONの参照設定を忘れると
User-defined type not defined
エラーが出ます
応用ポイント:双方向連携や自動同期も可能
- スプレッドシートからデータを取得し、Accessに取り込む(GETメソッド)
- Power Automateと連携し、スプレッドシート更新時にAccessを自動更新
- 定時実行のバッチ処理をTask Schedulerで組み合わせて、完全自動化
上級者の方なら、JSONをパースして条件付きで書き込むロジックを組むのも良いですね。
まとめ:Accessとクラウドの力で業務効率アップ!
今回ご紹介したように、GoogleスプレッドシートとAccessを連携することで、
- 複数拠点でリアルタイム共有が可能に
- 集計表や報告書の自動化で作業削減
- VBAの知識を活かしたクラウド活用が可能に
「これなら自分でもやれそう!」と思っていただけたなら、ぜひまずは1シート書き込みから試してみてください。
それではまた、なかぜんでした。
¥1,210 (2025/07/20 11:53時点 | Amazon調べ)
