【VBA】INSERT文を実行する【SQLite】

VBAから
 ・SQLiteへINSERT文を実行
できます!

PR

前提

・SQLiteがインストールされていること。
・SQLite ODBC Driverがインストールされていること。

SQLite ODBC Driverは以下で取得できます。
※「sqliteodbc.exe」または「sqliteodbc_w64.exe」をダウンロードしてインストールしてください。
※「sqliteodbc.exe」32bit用です。
※「sqliteodbc_w64.exe」は64bit用です。


PR

VBAコード

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

Option Explicit

Sub sample()
    
    Dim ws As Worksheet
    Dim dbName As String
    Dim conStr As String
    Dim sql As String
    Dim con As Object
    Dim command As Object
    Dim rowNum As Long

    'DB名(SQLiteのファイル名)
    dbName = "C:\Users\user\Desktop\sampleDB.dba"
    '接続文字列
    conStr = "DRIVER=SQLite3 ODBC Driver;Database=" & dbName
    'INSERT文
    sql = "INSERT INTO employee  VALUES('00004','太田史郎','男','情シス')"
    
    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

    con.Close
    Set command = Nothing
    Set con = Nothing
    
End Sub

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

・DB名(SQLiteのファイル名)
・接続文字列
・INSERT文

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

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

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

PR

実行結果

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

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

参考①

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

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

PR

参考②

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

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


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


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


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

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