엑셀 VBA 매크로와 SQLite3를 연계하는 샘플 XLS 샘플에서는 VBA 매크로를 통해 엑셀 데이터에서 SQLite 데이터베이스에 데이터를 삽입하고, SQLite 데이터베이스에서 데이터를 조회하여 엑셀 시트에 표시하는 기능을 구현합니다. 이 샘플 코드를 통해 엑셀 VBA와 SQLite를 연계할 수 있습니다. 필요에 따라 코드를 수정하여 사용자의 요구에 맞게 조정할 수 있습니다.
SQLite ODBC 드라이버 설치: 엑셀에서 SQLite 데이터베이스에 접근하기 위해 ODBC 드라이버가 필요합니다. SQLite ODBC 드라이버를 다운로드하고 설치합니다. 예를 들어, SQLite ODBC Driver Site Link (https://www.ch-werner.de/sqliteodbc/)에서 다운로드할 수 있습니다.
엑셀 파일 생성 및 VBA 환경 설정
- 엑셀을 열고 새 워크북을 생성합니다.
- Alt + F11 키를 눌러 VBA 편집기를 엽니다.
- Insert 메뉴에서 Module을 선택하여 새로운 모듈을 추가합니다.
SQLite 데이터베이스에 연결하고 데이터를 삽입 및 조회하는 VBA 코드입니다.
1) SQLite 데이터베이스에 연결 및 데이터 삽입
Sub InsertDataFromExcelToSQLite()
Dim cn As Object
Dim rs As Object
Dim dbPath As String
Dim sql As String
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim id As Variant
Dim data As String
' 엑셀 시트 설정
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' SQLite 데이터베이스 파일 경로 설정
dbPath = ThisWorkbook.Path & "\mydatabase.db"
' SQLite 데이터베이스 연결
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={SQLite3 ODBC Driver};Database=" & dbPath & ";"
' 테이블 생성 (없으면)
sql = "CREATE TABLE IF NOT EXISTS example (id INTEGER PRIMARY KEY, data TEXT);"
cn.Execute sql
' 엑셀 시트 데이터 삽입
For i = 2 To lastRow ' Assuming the first row contains headers
id = ws.Cells(i, 1).Value
data = ws.Cells(i, 2).Value
' SQL 삽입 명령어
sql = "INSERT INTO example (id, data) VALUES (" & id & ", '" & Replace(data, "'", "''") & "');"
cn.Execute sql
Next i
' 연결 종료
cn.Close
Set cn = Nothing
MsgBox "Data inserted successfully!"
End Sub
2) SQLite 데이터베이스에서 데이터 조회 및 엑셀에 표시
Sub GetDataFromSQLite()
Dim cn As Object
Dim rs As Object
Dim dbPath As String
Dim sql As String
Dim i As Integer
' SQLite 데이터베이스 파일 경로 설정
dbPath = ThisWorkbook.Path & "\mydatabase.db"
' SQLite 데이터베이스 연결
Set cn = CreateObject("ADODB.Connection")
cn.Open "Driver={SQLite3 ODBC Driver};Database=" & dbPath & ";"
' 데이터 조회
sql = "SELECT * FROM example;"
Set rs = CreateObject("ADODB.Recordset")
rs.Open sql, cn
' 엑셀 시트에 데이터 표시
i = 1
With ThisWorkbook.Sheets("Sheet1")
.Cells.Clear
Do While Not rs.EOF
.Cells(i, 1).Value = rs.Fields("id").Value
.Cells(i, 2).Value = rs.Fields("data").Value
rs.MoveNext
i = i + 1
Loop
End With
' 연결 종료
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
MsgBox "Data retrieved successfully!"
End Sub
엑셀 시트에 버튼 추가
1. 엑셀로 돌아가서 `개발 도구` 탭을 선택합니다.
2. `삽입`에서 `양식 컨트롤`의 `버튼`을 선택합니다.
3. 버튼을 시트에 그린 후, `매크로 지정` 대화상자가 나타나면 `InsertDataToSQLite`를 선택합니다.
4. 동일한 방법으로 두 번째 버튼을 추가하고 `GetDataFromSQLite` 매크로를 지정합니다.
테스트
이제 두 개의 버튼이 있는 엑셀 시트가 있을 것입니다. 하나는 SQLite 데이터베이스에 데이터를 삽입하고, 다른 하나는 데이터를 조회하여 엑셀 시트에 표시합니다.
1. 첫 번째 버튼을 클릭하여 데이터를 삽입합니다.
2. 두 번째 버튼을 클릭하여 데이터를 조회하고 엑셀 시트에 표시합니다.