Excel에서 ODBC없이 SQLite 작업 (설정)
이번에는 ODBC 없이 조작하는 방법을 써 갑니다.
어떤 시간에 사용합니까?
등등 ...
준비하는 것
이 사이트 에서 다운로드할 수 있습니다.
이 사이트 에서 다운로드할 수 있습니다.
이번은 32bit판으로 소개합니다.
환경
사용환경
비트
OS
Windows 10
64bit
오피스
Excel 2013
32bit
DB
SQLite
32bit
도구
SQLiteForExcel
32bit
절차
SQLiteForExcel-0.9.zip 압축 해제
내용은 다음과 같은 느낌.
경로: SQLiteForExcel\Distribution
경로: SQLiteForExcel\Source\SQLite3VBAModules\
그 외에도 SQLite3_StdCall.dll의 소스라든지 들어 있지만, 할애합니다.
sqlite3.dll도 들어 있지만, 이번에는 DL 해온 최신 버전을 사용합니다.
그래서 사용하는 것은 이하의 4개.
파일 집계
위의 파일을 한 곳에 정리합니다. 거기에 DL 해온 32bit SQLite를 추가합니다.
왜, Excel이라든지는 64bit라고 써 있는 것 사용하는 건지 곳입니다만,
32bit판의 샘플이 xls이었으므로, xlsm로 실험해 보았습니다.
덧붙여서 .xlsm과 .bas의 64의 표기는 32bit와 64bit 양쪽에 대응하기 위해서, 분기 프로그램이 쓰여져 있습니다.
VBA
#If Win64 Then
#Else
If hSQLiteStdCallLibrary = 0 Then
hSQLiteStdCallLibrary = LoadLibrary(libDir + "SQLite3_StdCall.dll")
If hSQLiteStdCallLibrary = 0 Then
Debug.Print "SQLite3Initialize Error Loading " + libDir + "SQLite3_StdCall.dll:", Err.LastDllError
SQLite3Initialize = SQLITE_INIT_ERROR
Exit Function
End If
End If
#End If
분기는 쓰고 있지만, Excel 본체가 64bit이었을 경우 SQLite3_StdCall.dll를 읽지 않은 용으로 보입니다만・・・
모듈 로드
본래라면 Excel을 기동해, VBA의 에디터 화면에서 Sqlite3_64.bas와 Sqlite3Demo_64.bas를 로드합니다.
이번에는 샘플 Excel의 SQLiteForExcel_64.xlsm을 사용하기 때문에 처음부터 읽습니다.
실제로 사용할 때는 필요한 것은 Sqlite3이므로 Demo는 어느 쪽이든 OK입니다.
테스트 실행
Sqlite3Demo의 AllTests는 테스트 모듈이므로 당연히 이대로 움직입니다.
기본적으로 DB 파일의 작성 대상은 C:\TestSqlite3ForExcel.db3입니다.
미리 C: 경로를 변경합니다.
경로를 변경한 후 AllTests를 실행해 봅니다.
testlog
SQLite3Close returned 0
----- TestError Start -----
SQLite3Open returned 14
SQLite3Open error messagE:\sqlite\db unable to open database file
SQLite3Close returned 0
----- TestError End -----
----- TestInsert Start -----
SQLite3Open returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3Execute - Insert affected 1 record(s).
----- TestInsert End -----
----- TestSelect Start -----
SQLite3Open returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Row Ready
Column count: 3
Column 0: TheId INTEGER 123
Column 1: TheText TEXT ABC
Column 2: TheValue FLOAT 42.1
SQLite3Step Row Ready
Column count: 3
Column 0: TheId INTEGER 987654
Column 1: TheText TEXT ZXCVBNM
Column 2: TheValue NULL Null
SQLite3Step Done
SQLite3Finalize returned 0
----- TestSelect End -----
----- TestBinding Start -----
SQLite3Open returned 0
SQLite3Finalize returned 0
Insert Elapsed: 00:00:02
SQLite3PrepareV2 returned 0
At row 1
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 10001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 20001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 30001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 40001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 50001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 60001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 70001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 80001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
At row 90001
------------
Column count: 4
Column 0: TheId INTEGER 42501
Column 1: datetime(TheDate) TEXT 2001-05-16 00:00:00
Column 2: TheText TEXT The quick brown fox jumped over the lazy dog.
Column 3: TheValue FLOAT 333.240926265717
============
SQLite3Finalize returned 0
Select Elapsed: 00:00:04
----- TestBinding End -----
----- TestDates Start -----
SQLite3Open returned 0
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
Event: Nice trip somewhere DatE:\sqlite\db 2010/06/19
SQLite3Finalize returned 0
----- TestDates End -----
----- TestStrings Start -----
SQLite3Open returned 0
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
Result1:
Result2:
Long String is the samE:\sqlite\db True
SQLite3Finalize returned 0
----- TestStrings End -----
----- TestBackup Start -----
SQLite3Open returned 0
SQLite3PrepareV2 returned 0
SQLite3Step Row Ready
Column count: 2
Column 0: Key INTEGER 1
Column 1: Value TEXT First
SQLite3Step Row Ready
Column count: 2
Column 0: Key INTEGER 2
Column 1: Value TEXT Second
SQLite3Step Done
SQLite3Finalize returned 0
SQLite3Open returned 0
SQLite3BackupStep returned 101
SQLite3BackupFinish returned 0
Backup result 0
Selecting from backup:
SQLite3PrepareV2 returned 0
SQLite3Step Row Ready
Column count: 2
Column 0: Key INTEGER 1
Column 1: Value TEXT First
SQLite3Step Row Ready
Column count: 2
Column 0: Key INTEGER 2
Column 1: Value TEXT Second
SQLite3Step Done
SQLite3Finalize returned 0
----- TestBackup End -----
----- TestBlob Start -----
SQLite3Open returned 0
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
Blob byte 0: 90
Blob byte 1: 91
Blob byte 2: 92
SQLite3Finalize returned 0
----- TestBlob End -----
SQLite3Open returned 0
SQLite3OpenV2 returned 0
SQLite3PrepareV2 returned 0
SQLite3Step returned 101
SQLite3Finalize returned 0
SQLite3PrepareV2 returned 0
SQLite3Step returned 8
Cannot Write in Read Only database
SQLite3Finalize returned 8
SQLite3PrepareV2 returned 0
SQLite3Step returned 101
But Reading is granted on Read Only database
SQLite3Finalize returned 0
SQLite3Close V2 returned 0
SQLite3Close returned 0
성공적으로 테스트 할 수 있다면 소통은 괜찮습니다.
그리고 테스트 모듈에서 어떤 함수가 무엇을하고 있는지
끈 풀어 가면 좋아하게 사용할 수 있다고 생각합니다!
요약
이번은 환경을 정돈하기까지의 내용입니다.
실제로 테이블을 만들거나 SELECT나 INSERT 등의 설명은
다시 다음에 시도하려고합니다!
테스트 모듈 내에서 CREATE나 INSERT, SELECT는 하고 있기 때문에
지금은 그것을 풀어내면서 수중의 데이터를 DB화하고 있습니다.
Reference
이 문제에 관하여(Excel에서 ODBC없이 SQLite 작업 (설정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hisayuki/items/9b42624790ba74a2fb35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)