外部連携 × INSERT / UPDATE(ADO接続)
Excel VBAから外部データベースに接続して INSERT(追加) や UPDATE(更新) を行うことで、Excelを「入力画面」として使い、DBに直接反映させることができます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- INSERT文 → 新しいレコードを追加する
- UPDATE文 → 既存レコードを更新する
- ADO接続の流れ:
ConnectionオブジェクトでDBに接続ExecuteメソッドでSQL文を実行- 結果をDBに反映
- 終了処理で接続を閉じる
テンプレ1:INSERT文でデータ追加
Sub SQL_Insert()
Dim conn As Object
Dim sql As String
' 接続オブジェクト作成
Set conn = CreateObject("ADODB.Connection")
' 接続文字列(例:Accessデータベース)
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\sample.accdb;"
conn.Open
' SQL文(新しいレコードを追加)
sql = "INSERT INTO Customers (Name, Age, Address) " & _
"VALUES ('山田太郎', 30, '東京都江東区')"
conn.Execute sql
conn.Close
Set conn = Nothing
MsgBox "INSERT文を実行してデータを追加しました!"
End Sub
VB- ポイント:
INSERT INTO テーブル名 (列名, …) VALUES (値, …)の形。- Excelのセル値を組み込むことも可能。
テンプレ2:UPDATE文でデータ更新
Sub SQL_Update()
Dim conn As Object
Dim sql As String
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\sample.accdb;"
conn.Open
' SQL文(既存レコードを更新)
sql = "UPDATE Customers SET Age = 31, Address = '千葉県船橋市' " & _
"WHERE Name = '山田太郎'"
conn.Execute sql
conn.Close
Set conn = Nothing
MsgBox "UPDATE文を実行してデータを更新しました!"
End Sub
VB- ポイント:
UPDATE テーブル名 SET 列=値 WHERE 条件の形。- WHERE句を忘れると全件更新になるので注意。
テンプレ3:Excelシートの値をINSERTする(実務向け)
シート「Data」に以下の表があると仮定:
| 名前 | 年齢 | 住所 |
|---|---|---|
| 鈴木花子 | 25 | 千葉県船橋市 |
Sub SQL_Insert_FromSheet()
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
' シートの値を組み込む
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 "シートの値をINSERTしました!"
End Sub
VB- ポイント:
- Excelのセル値を文字列連結でSQLに組み込む。
- 実務で「Excel入力をDBに登録」する場面に便利。
テンプレ4:Excelシートの値でUPDATEする
Sub SQL_Update_FromSheet()
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
' シートの値を組み込む
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 "シートの値でUPDATEしました!"
End Sub
VB- ポイント:
- WHERE句で対象を絞る。
- Excelの値を使って更新できる。
例題で練習
'例1:INSERT文で新しい顧客を追加
'例2:UPDATE文で顧客の住所を変更
'例3:シートの値をINSERTしてDBに登録
'例4:シートの値でUPDATEしてDBを更新
VB初心者向けポイント
- INSERTは新規追加、UPDATEは既存更新 → 役割を明確に。
- SQL文は文字列として組み立てる →
"INSERT INTO ... VALUES(...)"。 - Excelのセル値を組み込める → 実務で入力フォーム代わりに使える。
- WHERE句を忘れると全件更新になる → 最重要注意点。
- 終了処理を必ず行う →
conn.Close。
👉 この「外部連携 × INSERT/UPDATEテンプレ」を覚えておけば、Excel VBAで 外部データベースにExcelの入力を反映させる処理 を簡単に作成できます。
