AccessやGoogleスプレッドシートと連携するVBAの基礎

Excel VBA

はじめに

Excelは単体でも強力なツールですが、実務では「他のデータベースやクラウドサービスと連携したい」というニーズが高まっています。
特に多いのが次のケースです。

  • AccessとExcelを連携させて、データを自動で取得・更新したい
  • Googleスプレッドシートにあるデータを取り込みたい
  • Excelで作成した集計結果をクラウドに共有したい

こうした作業も、VBA(Visual Basic for Applications) を使えば可能です。
この記事では、初心者向けに Access連携とGoogleスプレッドシート連携の基礎 を解説します。


ExcelとAccessの連携(基本編)

1. AccessデータをExcelに取り込む

AccessのテーブルをExcelに直接読み込むことができます。

サンプルコード

Sub ImportFromAccess()
    Dim cn As Object
    Dim rs As Object
    Dim sql As String
    Dim row As Long
    
    ' 接続文字列(パスを環境に合わせて変更)
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=C:\Database\sample.accdb;"
    
    ' SQL文
    sql = "SELECT * FROM 売上データ"
    
    Set rs = cn.Execute(sql)
    row = 2
    
    ' フィールド名を出力
    For i = 0 To rs.Fields.Count - 1
        Cells(1, i + 1).Value = rs.Fields(i).Name
    Next i
    
    ' データを出力
    Do Until rs.EOF
        For i = 0 To rs.Fields.Count - 1
            Cells(row, i + 1).Value = rs.Fields(i).Value
        Next i
        rs.MoveNext
        row = row + 1
    Loop
    
    rs.Close
    cn.Close
End Sub

ポイント

  • ADODB.Connection を使ってAccessに接続
  • SQLでデータを指定し、Excelに転記

2. ExcelからAccessへデータを追加する

売上入力やマスタ更新をExcelから行い、そのままAccessに反映することも可能です。

サンプルコード

Sub ExportToAccess()
    Dim cn As Object
    Dim sql As String
    Dim name As String
    Dim amount As Long
    
    name = Range("A2").Value
    amount = Range("B2").Value
    
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=C:\Database\sample.accdb;"
    
    sql = "INSERT INTO 売上データ (顧客名, 金額) " & _
          "VALUES('" & name & "', " & amount & ")"
    cn.Execute sql
    
    cn.Close
    MsgBox "Accessにデータを登録しました!"
End Sub


ExcelとGoogleスプレッドシートの連携(基本編)

Googleスプレッドシートはクラウド上で共有できるため、リモートワークやチーム作業で人気です。
VBAから直接操作する場合は、Google Sheets API を利用します。


1. Google Sheets APIの準備

  1. Google Cloud Consoleでプロジェクトを作成
  2. Google Sheets APIを有効化
  3. APIキーまたはOAuth認証情報を取得
  4. VBAで利用するために「WinHttp」や「MSXML2.XMLHTTP」を使用

2. データを取得するサンプルコード

以下はシートからデータを取得する例です。

Sub GetGoogleSheetData()
    Dim http As Object
    Dim JSON As Object
    Dim URL As String
    
    ' APIキーとシートIDを設定
    URL = "https://sheets.googleapis.com/v4/spreadsheets/{シートID}/values/Sheet1!A1:D10?key={APIキー}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", URL, False
    http.Send
    
    ' 結果を確認(JSON形式で返る)
    MsgBox http.responseText
End Sub


3. データを書き込むサンプルコード

Google Sheets APIに対して POST リクエストを送ることで、Excelのデータをシートに書き込むことも可能です。
ただし、OAuth認証 が必要になるため、少し難易度が上がります。


実務での活用例

  • Accessとの連携
    → 顧客データベースをAccessに集約し、Excelから入力・集計を行う。
  • Googleスプレッドシートとの連携
    → 出張先や在宅勤務中でも、Excelからクラウドに自動アップロード。
    → チーム全員が同じシートを閲覧・編集可能。
  • ハイブリッド運用
    → Accessで基幹データを管理し、必要な部分をGoogleスプレッドシートで共有。

まとめ

  • ExcelはVBAを使えば、AccessやGoogleスプレッドシートと連携できる
  • Access連携:ADODBでデータの取り込み・書き込み
  • Google Sheets連携:APIを利用してクラウドデータを操作
  • 実務に応用すれば、手作業が減り、データ共有・更新がスムーズに

これらの連携を覚えると、Excelの可能性は一気に広がります。
ぜひまずはサンプルコードを試し、業務に活かしてみてください。

コメント