例えば
・SQLite上の
・テーブル「employee」のデータを取得
して、
シート上へ設定できます!
※列名も含む。
ここではVBAから
・「QueryTableオブジェクト(=クエリと接続)」
を使用して取得する方法を記載します!
前提
・SQLiteがインストールされていること。
・SQLite ODBC Driverがインストールされていること。
VBAコード
ここでは例として、
・デスクトップ上のSQLiteファイル「sampleDB.db」の
・テーブル「employee」のデータを取得して
・新規作成したシート「data」へ設定
します。
Option Explicit
Sub sample()
Dim dataSheeName As String
Dim sheet As Worksheet
Dim dataSheet As Worksheet
Dim dbName As String
Dim sql As String
Dim conStr As String
Dim n As Name
'SELECT文の結果を設定するシート名
dataSheeName = "data"
'DB名(SQLiteのファイル名)
dbName = "C:\Users\user\Desktop\sampleDB.db"
'SELECT文
sql = "select id,name,sex,section from employee"
'既にシート「date」が存在する場合は削除
For Each sheet In ThisWorkbook.Worksheets
If sheet.Name = dataSheeName Then
'確認メッセージを非表示
Application.DisplayAlerts = False
'シート削除
Worksheets(dataSheeName).Delete
'確認メッセージを表示
Application.DisplayAlerts = True
End If
Next
'シート「date」を新規作成
Set dataSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
dataSheet.Name = dataSheeName
'接続文字列の組み立て
conStr = "ODBC;DRIVER=SQLite3 ODBC Driver;Database=" & dbName
'「QueryTableオブジェクト(=クエリと接続)」を作成
With dataSheet.QueryTables.Add(Connection:=conStr, _
Destination:=Range("B2"), _
sql:=sql)
'SELECT文を実行
.Refresh BackgroundQuery:=False
'名前(後続で削除できるように名前を設定)
.Name = "仮テーブル"
'作成された「QueryTableオブジェクト(=クエリと接続)」を削除
.Delete
End With
'上記で作成されてしまう名前定義(仮テーブル)を削除
For Each n In ActiveWorkbook.Names
If n.Name = dataSheeName & "!" & "仮テーブル" Then
n.Delete '
End If
Next
End Sub
実行結果
SQLiteのデータを取得してシートへ設定できました。
参考①
シート上の表(一連のセル範囲)をテーブル化することで、
・スタイルの設定
・テーブル化した範囲の名前定義
ができます。
詳細は以下の記事をご確認ください。
参考②
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「QueryTables.Add」
●「QueryTableオブジェクト(=クエリと接続)」