【VBA】INSERT文を実行する【SQL Server】

VBAから
 ・SQL ServerへINSERT文を発行
できます!

PR

前提

・「Microsoft OLE DB Driver for SQL Server」がインストールされていること。

「Microsoft OLE DB Driver for SQL Server」がインストール有無は、[Windowsの設定]-[アプリ]で確認できます。

[Windowsの設定]-[アプリ]
[Windowsの設定]-[アプリ]
PR

VBAコード

ここでは例として、
 ・テーブル「employee」へINSERT文を実行
します。
※INSERTされたレコード件数をメッセージボックスに出力します。
※エラー処理もします。

Option Explicit

Sub sample()

    'プロバイダ
    Const PROVIDER As String = "MSOLEDBSQL"
    'サーバー名
    Const SERVER_NAME As String = "localhost\SQLEXPRESS"
    'DB名
    Const DB_NAME As String = "sampleDB"
    'ユーザー名
    Const USER_NAME As String = "XXXXX"
    'パスワード
    Const PASSWORD As String = "XXXXX"
    
    Dim sql As String
    Dim conStr As String
    Dim con As Object
    Dim command As Object
    Dim rowNum As Long
    
    'INSERT文
    sql = "INSERT INTO employee  VALUES('00004','太田史郎','男','情シス')"
    '接続文字列の組み立て(SQL Server認証)
    conStr = "Provider=" & PROVIDER & ";" & _
              "Data Source=" & SERVER_NAME & ";" & _
              "Initial Catalog=" & DB_NAME & ";" & _
              "User ID=" & USER_NAME & ";" & _
              "Password=" & PASSWORD & ";"
    
    On Error GoTo Err
    
    'DB接続
    Set con = CreateObject("ADODB.Connection")
    con.Open conStr
    'INSERT文を実行
    Set command = CreateObject("ADODB.Command")
    With command
        .ActiveConnection = con
        .CommandText = sql
        .Execute rowNum
    End With
    
    MsgBox ("登録件数:" & rowNum)

    '接続を閉じる
    con.Close
    Set command = Nothing
    Set con = Nothing

    Exit Sub
    
Err:
    MsgBox ("エラーが発生しました。" & vbCrLf & vbCrLf & _
            Err.Description & vbCrLf), vbCritical
    'DB接続していたら閉じる
    If con.State = 1 Then
        con.Close
    End If
    
    Set command = Nothing
    Set con = Nothing

End Sub

以下を設定します(6~14行目)。
※必要に応じて修正してください。

・プロバイダ
・サーバー名
・DB名
・ユーザー名
・パスワード
※上記では「ユーザー名」と「パスワード」は仮で「XXXXX」としています。適切な値を設定してください。

「Connectionオブジェクト」の「Open」メソッドにより、DBへ接続します(35行目)。

「Commandオブジェクト」の
 ・「ActiveConnection」プロパティに「Connectionオブジェクト」を指定
 ・「CommandText」プロパティに「INSERT文」を指定
します(39、40行目)。

「Commandオブジェクト」の
 ・「Execute」メソッドによりINSERT文を発行
します(41行目)。

PR

実行結果

SQL ServerへINSERT文を実行できました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

SQL ServerへSELECT文の実行もできます。

詳細は以下の記事をご確認ください。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「Connectionオブジェクト」の「Open」メソッド


●「Commandオブジェクト」の「ActiveConnection」プロパティ


●「Commandオブジェクト」の「CommandText」プロパティ


●「Commandオブジェクト」の「Execute」メソッド