目的
SQLite3をインストールしたので、ExcelVBAからのアクセスを試してみる
ODBCを使用してアクセスする
32bit/64bit 版ODBCドライバー共に正常に使用できる仕様なんですね・・・
サンプルコード
'=================================================================
'
' Excel2016 VBA -> SQLite3 からの読込サンプル
' 32bit/64bit 版ODBCドライバー共に正常に読み込めるのはなぜ?
'
'=================================================================
Private Sub ReadSqlite3()
On Error GoTo ERR_PROC
Dim adoCon As ADODB.Connection
Dim adoRst As New ADODB.Recordset
Dim adoCmd As New ADODB.Command
Dim host As String
Dim driver As String
Dim dbname As String
Dim user As String
Dim pass As String
Dim conn As String
'
driver = "SQLite3 ODBC Driver"
dbname = "C:\DEV\DB\sqlite3\demo.sqlite3"
' host = "SQLITE3DEMO64" ' sqliteodbc_w64.exe
host = "SQLITE3DEMO32" ' sqliteodbc.exe
user = "" ' 未設定
pass = "" ' 未設定
conn = "DSN=" & host & ";UID=" & user & ";PWD=" & pass
conn = "DRIVER={" & driver & "};DATABASE=" & dbname & ";UID=" & user & ";PWD=" & pass
'
Set adoCon = New ADODB.Connection
adoCon.ConnectionString = conn
adoCon.CursorLocation = adUseClient
Call adoCon.Open
'
adoCmd.ActiveConnection = adoCon
adoCmd.CommandText = "SELECT * FROM TEST_TABLE"
adoCmd.CommandType = adCmdText
'
Set adoRst = adoCmd.Execute
While Not adoRst.EOF
Debug.Print adoRst.Fields("ID") & " " & adoRst.Fields("VALUE")
adoRst.MoveNext
Wend
'
adoCon.Close
Set adoCon = Nothing
Set adoRst = Nothing
Set adoCmd = Nothing
Exit Sub
ERR_PROC:
adoCon.Close
Set adoCon = Nothing
Set adoRst = Nothing
Set adoCmd = Nothing
End Sub
参考にしたのは以下のサイト
簡単なコマンドの作成と実行
対象テーブルは以下で作成したもの
Windows 10 Pro x64 で SQLite3を試してみる