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

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

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」へSELECT文を実行して
 ・取得したデータをメッセージ出力
します。
※今回は3レコード分のみ取得します。

SQLite上のテーブル「employee」のデータ
SQLite上のテーブル「employee」のデータ
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 rs As Object
    Dim recordStr As String
    Dim i As Double
    
    'シート
    Set ws = Worksheets("sample")
    'DB名(SQLiteのファイル名)
    dbName = "C:\Users\user\Desktop\sampleDB.db"
    '接続文字列
    conStr = "DRIVER=SQLite3 ODBC Driver;Database=" & dbName
    'SELECT文
    sql = "SELECT id,name,sex,section FROM employee LIMIT 3"

    'DB接続
    Set con = CreateObject("ADODB.Connection")
    con.Open conStr
    
    'SELECT文を実行
    Set rs = con.Execute(sql)
        
    '取得したレコード分繰り返し
    Do Until rs.EOF
        ' 取得した1レコードをカンマ区切りでString型の変数に設定
        recordStr = rs.Fields("id").Value & "," & _
                    rs.Fields("name").Value & "," & _
                    rs.Fields("sex").Value & "," & _
                    rs.Fields("section").Value
        ' 取得した1レコードをMsgBoxで出力
        MsgBox recordStr
        ' 次のレコードへ進む
        rs.MoveNext
    Loop

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

End Sub

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

・SELECT文の結果を設定するシート
・DB名(SQLiteのファイル名)
・SELECT文
・接続文字列

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

「Connectionオブジェクト」の「Execute」メソッドにより、SELECT文を実行します(28行目)。
※「Recordsetオブジェクト」を取得します。

SELECT文で取得したレコード分繰り返し処理をします(31~41行目)。
※上記では取得したデータをメッセージ出力しています。

PR

実行結果

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

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

参考①

SQLiteの場合、「Rangeオブジェクト」の「CopyFromRecordset」メソッドでシートへデータの貼り付けができない場合があります。

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

PR

参考②

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

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

PR

参考③

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

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


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