VBAから
・SQLiteへSELECT文を実行
できます!
前提
・SQLiteがインストールされていること。
・SQLite ODBC Driverがインストールされていること。
VBAコード
ここでは例として、
・デスクトップ上のSQLiteファイル「sampleDB.db」の
・テーブル「employee」へSELECT文を実行して
・取得したデータをメッセージ出力
します。
※今回は3レコード分のみ取得します。
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
実行結果
SQLiteへSELECT文を実行できました。
参考①
SQLiteの場合、「Rangeオブジェクト」の「CopyFromRecordset」メソッドでシートへデータの貼り付けができない場合があります。
詳細は以下の記事をご確認ください。
参考②
SQLiteへINSERT文の実行もできます。
詳細は以下の記事をご確認ください。
参考③
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「Connectionオブジェクト」の「Open」メソッド
●「Connectionオブジェクト」の「Execute」メソッド