본문 바로가기
Development/기타

Excel 에서 VBA 를 이용하여 SQLite 데이터 베이스 접근 방법

by qWooWp 2023. 8. 28.
반응형

 

1.   실행 환경 설정

-        SQLite 윈도우 버전을 설치 시스템 변수 설정

-        다운로드 위치 : https://www.sqlite.org/download.html

-        사용하는 운영체제 환경에 따라서 아래 dll 파일은 달라질 있다.

-        : Windows 10 경우 64비트 dll 다운로드 하면 된다.

-        Sqlite-dll-win64-x64-3430000.zip / Sqlite-tools-win32-x86-3430000.zip 다운로드.

-        Tools 파일을 압축 해제 파일들을 C:\sqlite3 디렉토리에 모두 복사합니다.

-        시스템 환경 변수를 설정

·        제어판에서 "시스템"을 선택하고, "시스템 속성"을 클릭한 다음, "환경 변수"를 선택합니다. "시스템 변수" 아래에서 "Path"를 찾아 편집을 클릭합니다. 이어서 "새로 만들기"를 선택하고, 방금 복사한 SQLite 폴더의 경로 (예: "C:\sqlite3")를 입력합니다. 변경 사항을 저장하고, 모든 창을 닫습니다.

·        SQLite가 정상적으로 설치되었는지 확인하기 위해 새로운 명령 프롬프트 창을 열고 "sqlite3"을 입력합니다. 이제 SQLite 프롬프트가 표시되며, SQLite 데이터베이스 파일과 상호작용할 수 있습니다.

 

아래 페이지에서 sqliteodbc.exe 파일을 다운로드 한다.

http://www.ch-werner.de/sqliteodbc/  

 

SQLite ODBC Driver

SQLite ODBC Driver               The SQLite Database Engine provides a lightweight C library to access database files using a large subset of SQL92 without the overhead of RDBMS server processes. In order to use that functionality as a desktop datab

www.ch-werner.de

 

 

Sqliteodbc.exe 파일을 실행하여 설치 합니다.

Windows 10 이상인 경우는 64비트가 베이스 이므로 sqliteodbc_w64.exe 파일을 다운로드 합니다.

윈도우 로고 -> 검색 : “odbc 데이터 원본 관리자 검색해서 실행 합니다.

추가를 누르고 SQLite3 ODBC Driver 항목을 선택하고 생성되어 있는 아래와 같이 데이터베이스 파일을 선택한 이름을 선택한 다음 OK 버튼을 선택합니다.

 

CASE1) 데이터 불러 오기 

엑셀을 실행하고 아래 메뉴를 선택합니다.

연결한 데이터베이스를 불러옵니다.

* ODBC 이용한 기타 설정 방법 예시 (원격 연결 )

https://xlworks.net/using_database_in_excel_lec007/

 

CASE2) VBA에서 쿼리를 통해 가져오기

VBA 편집기에서 도구 > 참조 선택

VBA : Sample Code

Dim rs As New ADODB.Recordset

Dim strSQL As String

Dim strConn As String

Dim i As Integer

 

'//연결문자열을 만든다. DSN=TEST_DSN 형식으로 ODBC설정할때 등록한 DSN이름을 적고 DB Id,Password,Database명을 적는다.

strConn = "DSN=chinook;UID=chinook;PWD=chinook;DATABASE=C:\sqlite3\chinook.db;"

 

strSQL = "SELECT * FROM artists"

 

'//DB 연결하면서 Recordset 연다.

rs.Open strSQL, strConn

If rs.EOF Then

    MsgBox "조회조건에 해당하는 자료가 없습니다."

Else

    '타이틀을 표시한다.

    For i = 1 To rs.Fields.Count

        Cells(1, i).Value = rs.Fields(i - 1).Name

    Next

 

 

    With ActiveSheet

        '조회한 결과집합(rs - 레코드셋) "출력"Sheet A2지점을 꼭지점으로 해서 출력한다.

        .Range("A2").CopyFromRecordset rs

    End With

End If

 

 

rs.Close

Set rs = Nothing

반응형

댓글