엑셀 VBA 매크로와 SQLite3를 연계하는 샘플 XLS 파일

엑셀 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. 두 번째 버튼을 클릭하여 데이터를 조회하고 엑셀 시트에 표시합니다.

Leave a Comment