Excel VBA 逆引き集 | INSERT/UPDATE

Excel VBA
スポンサーリンク

外部連携 × INSERT / UPDATE(ADO接続)

Excel VBAから外部データベースに接続して INSERT(追加)UPDATE(更新) を行うことで、Excelを「入力画面」として使い、DBに直接反映させることができます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • INSERT文 → 新しいレコードを追加する
  • UPDATE文 → 既存レコードを更新する
  • ADO接続の流れ:
    1. Connection オブジェクトでDBに接続
    2. Execute メソッドでSQL文を実行
    3. 結果をDBに反映
    4. 終了処理で接続を閉じる

テンプレ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の入力を反映させる処理 を簡単に作成できます。

タイトルとURLをコピーしました