外部連携 × DB⇄Excel同期(ADO接続)
Excelを「フロントエンド」として使い、外部データベースと 双方向に同期(読み込み/書き込み) する方法を紹介します。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- DB⇄Excel同期とは?
- DB → Excel:SELECT文でデータを取得し、シートに展開
- Excel → DB:INSERT/UPDATE文でExcelの入力をDBに反映
- 流れ:
- ADOでDBに接続
- SELECTでデータを取得 → Excelに展開
- Excelの値をINSERT/UPDATEでDBに反映
- 必要に応じて定期的に同期
テンプレ1:DB → Excel(SELECT結果をシートに展開)
Sub Sync_DBtoExcel()
Dim conn As Object, rs As Object
Dim sql As String
Dim ws As Worksheet: Set ws = Worksheets("Data")
' 接続
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\sample.accdb;"
conn.Open
' SQLでデータ取得
sql = "SELECT * FROM Customers"
Set rs = conn.Execute(sql)
' シートに展開
ws.Cells.Clear
ws.Range("A1").CopyFromRecordset rs
' 終了処理
rs.Close: conn.Close
MsgBox "DBからExcelへ同期しました!"
End Sub
VB- ポイント:
CopyFromRecordsetで一括展開。- Excelを「DBビューア」として利用可能。
テンプレ2:Excel → DB(INSERTで新規追加)
Sub Sync_ExcelToDB_Insert()
Dim conn As Object
Dim sql As String
Dim ws As Worksheet: Set ws = Worksheets("Data")
' 接続
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\sample.accdb;"
conn.Open
' Excelの値をINSERT
sql = "INSERT INTO Customers (Name, Age, Address) VALUES ('" & _
ws.Range("A2").Value & "', " & ws.Range("B2").Value & ", '" & ws.Range("C2").Value & "')"
conn.Execute sql
conn.Close
MsgBox "ExcelのデータをDBに追加しました!"
End Sub
VB- ポイント:
- Excelのセル値を文字列連結でSQLに組み込む。
- 実務で「Excel入力をDBに登録」する場面に便利。
テンプレ3:Excel → DB(UPDATEで既存更新)
Sub Sync_ExcelToDB_Update()
Dim conn As Object
Dim sql As String
Dim ws As Worksheet: Set ws = Worksheets("Data")
' 接続
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\sample.accdb;"
conn.Open
' Excelの値で更新
sql = "UPDATE Customers SET Age = " & ws.Range("B2").Value & _
", Address = '" & ws.Range("C2").Value & "' WHERE Name = '" & ws.Range("A2").Value & "'"
conn.Execute sql
conn.Close
MsgBox "ExcelのデータでDBを更新しました!"
End Sub
VB- ポイント:
- WHERE句で対象を絞る。
- Excelの値を使って更新できる。
テンプレ4:DB⇄Excelの双方向同期イメージ
- DB → Excel
- SELECTで最新データを取得し、シートに展開
- Excel → DB
- ユーザーがExcelで編集
- INSERT/UPDATEでDBに反映
'流れの例
Call Sync_DBtoExcel ' DBから最新データを取得
' ユーザーがExcelで編集
Call Sync_ExcelToDB_Update ' 編集内容をDBに反映
VB例題で練習
'例1:DBから顧客一覧をExcelに展開
'例2:Excelの入力をINSERTしてDBに追加
'例3:Excelの編集内容をUPDATEしてDBに反映
'例4:DB⇄Excelの双方向同期を実現
VB初心者向けポイント
- SELECTはデータ取得、INSERT/UPDATEは反映 → 役割を明確に。
- Excelを「入力フォーム」として使える → DBに直接登録可能。
- WHERE句を忘れると全件更新になる → 実務で最重要注意点。
- 終了処理を必ず行う →
conn.Close。 - 双方向同期は「取得→編集→反映」の流れ → ExcelとDBを橋渡しできる。
👉 この「外部連携 × DB⇄Excel同期テンプレ」を覚えておけば、Excel VBAで 外部データベースとExcelを双方向に同期し、業務データを効率的に管理する処理 を簡単に作成できます。
