[Excel]ExcelでSQLite操作

ExcelでSQLite操作手順を共有いたします。

SQLiteForExcelをダウンロードする

https://github.com/govert/SQLiteForExcel/releases

SQLite For Excel Version 1.0 Zipファイルをダウンロードする。

・ダウンロードされたZipファイルを解凍する。

・解凍されたファイルの「Distribution」フォルダを開き、以下のファイルをコピーして作業用フォルダに貼り付ける。

 1.PCのスペックが32Bitの場合

  「Distribution」フォルダの中の以下

  SQLite.dll

  SQLite3_StdCall.dll

SQLiteForExcel.xls

  2.PCのスペックが64Bitの場合

   「Distribution」フォルダの中の以下

SQLite3_StdCall.dll

SQLiteForExcel_64.xls

   「Distribution」フォルダの「x64」フォルダ中の以下

 SQLite.dll

・SQLiteのDBファイルを作業フォルダの下におく。

 例えば、ファイル名:Test.sqlite3

・例えば、64Bitの場合、SQLiteForExcel_64.xlsを開き、標準モジュールの「Sqlite3Demo」のAllTests関数の以下のように変更する。

TestFile = “保存フォルダ\Test.sqlite3”

InitReturn = SQLite3Initialize(ThisWorkbook.Path)
ここで、ThisWorkbook.Path(=ActiveのExcelファイルがあるフォルダ)にSQLite.dllあることを再確認しておく。

・Select文確認

例えば、関数TestSqliteSelect作成して、以下のコードを埋め込む。

Public Sub TestSelectCustomize()
    #If Win64 Then
    Dim myDbHandle As LongPtr
    Dim myStmtHandle As LongPtr
    #Else
    Dim myDbHandle As Long
    Dim myStmtHandle As Long
    #End If
    Dim RetVal As Long
    
    Dim stepMsg As String
    
    Debug.Print "----- TestSelect Start -----"
    ' Open the database - getting a DbHandle back
    RetVal = SQLite3Open(TestFile, myDbHandle)
    Debug.Print "SQLite3Open returned " & RetVal
    
    '-------------------------
    ' Select statement
    ' ===============
    ' Create the sql statement - getting a StmtHandle back
    RetVal = SQLite3PrepareV2(myDbHandle, "SELECT * FROM " & TableName, myStmtHandle)
    Debug.Print "SQLite3PrepareV2 returned " & RetVal

    ' Start running the statement
    RetVal = SQLite3Step(myStmtHandle)
    If RetVal = SQLITE_ROW Then
        Debug.Print "SQLite3Step Row Ready"
        PrintColumns myStmtHandle
    Else
        Debug.Print "SQLite3Step returned " & RetVal
    End If
    
    
    Dim colCount As Long
    Dim colName As String
    Dim colType As Long
    Dim colTypeName As String
    Dim colValue As Variant
    
    Dim i As Long
    
    colCount = SQLite3ColumnCount(myStmtHandle)
    Debug.Print "Column count: " & colCount
    For i = 0 To colCount - 1
        colName = SQLite3ColumnName(myStmtHandle, i)
        colType = SQLite3ColumnType(myStmtHandle, i)
        colTypeName = TypeName(colType)
        colValue = ColumnValue(myStmtHandle, i, colType)
        Debug.Print "Column " & i & ":", colName, colTypeName, colValue
    Next
    
    
    ' Close the database
    RetVal = SQLite3Close(myDbHandle)

    Debug.Print "----- TestSelect End -----"
End Sub