見出し画像

【Windows、Excel、SQLite3】Excel 32bit VBAからのSQLlite3への接続

WindowsでExcelからSQLite3へ接続する場合、ADO→ODBC経由で接続することになります。本当は使わない方法もあるようですが、他のデータベースと同様な方法で接続したい場合は、ADO→ODBC経由接続が良いと思います。
そのためには、SQLite ODBC Driverをインストールする必要があるのですが、
1.Excelが32bitの場合は、32bitのODBCドライバー
2.Excelが64bitの場合は、64bitのODBCドライバー
をインストールしなければなりません。

ドライバーは以下のサイトからダウンロードできます。

sqliteodbc.exe・・・・・・・・・32bitドライバーです
sqliteodbc_w64.exe・・・・・・・64bitドライバーです

尚、一応参考としてExcel VBAでのADOを使用したコードを示します。

    :
    :
    Dim mConnection As ADODB.Connection  '= ADODBコネクションオブジェクト
    Dim cnstr As String
    
    '= Connection Object 生成 ==================
    If (mConnection Is Nothing) Then
        Set mConnection = New ADODB.Connection
    End If
    
    '= ConnectionがOpenしていなければOpenする ===
    If (mConnection.State <> adStateOpen) Then
    
        Select Case PnDBSystemName
        Case "MSSQL"
            cnstr = "Provider=SQLOLEDB.1;Data Source=" & PnHostName & ";Initial Catalog=" & PnDBName
        Case "ORACLE"
            cnstr = "Provider=OraOLEDB.Oracle; Data Source=" & PnHostName
        Case "ACCESS"
            cnstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & PnHostName
        Case "SQLite3"
            cnstr = "DRIVER=SQLite3 ODBC Driver; Database=" & PnHostName
        End Select

        With mConnection
            '= Connection Object プロパティ設定 =====
            If (PnCursorLocation = 2) Then
                .CursorLocation = adUseServer
            Else
                .CursorLocation = adUseClient
            End If
            .Mode = adModeReadWrite
            '= Connection Open ===================
            .Open cnstr, PnUserName, PnPassWord
            '= トランザクション Start ===================
            .BeginTrans
        End With
    :
    :

SQLite3の接続部分だけ説明しますと、

cnstr = "DRIVER=SQLite3 ODBC Driver; Database=" & PnHostName

PnHostNameは、DBのファイル名(パスを含む)を示します。例えば、
「PnHostName = "C:\sqlite3\Sample.db"」
となります。

以上です。ではまた。

この記事が気に入ったらサポートをしてみませんか?