簡易で使い易いデータベースと言えばSQLiteですが、
そのSQLiteをExcelから使う方法を説明するよ!
ExcelからSQLiteを使う方法を書いてくださっている記事は幾つかありましたので参考にさせて戴きました
が、進め方がよく分からない部分が少しあって、悩む時間もあったので自分なりにまとめたよン
- ExcelからSQLiteを使いたい人
- Windows対象(Macで動くかどうかは知らん!)
- Excel VBAもしくはプログラミングの経験がある方
- データベースについての知識がある方
- Excel VBAも、プログラミングも、データベースも知らん!って方は読んでも分からないと思うよ
◆解決できるかも知れないお悩み
- ExcelからSQLiteを使う方法
ぜひこちらもご覧ください
Contents
手っ取り早く結論教えろ!
能書きはイラネーーー!!!
さっさと教えろ!!!
というセッカチさんは、このファイル↓をダウンロードしてね
>> ExcelToSQLite.zip
※マクロが入っています。テストはしていないので、動かす場合は各自の自己責任で動かしてください。何か問題が発生しても作者は一切責任を負いません。
ダウンロードしたら…
- 解凍しやがれっ!
- SQLiteForExcelをダウンロードしやがれっ!
- SQLiteForExcelを解凍しやがれっ!
- SQLiteForExcelから
SQLite3_StdCall.dll
とsqlite3.dll
をコピりやがれっ! SQLite3_StdCall.dll
とsqlite3.dll
をExcelToSQLite.xlsmと同じ場所に置きやがれっ!- ExcelToSQLite.xlsmを起動しやがれっ!
- 動かしやがれっ!
- VBAのソースコードを読みやがれっ!
- イミディエイトウィンドウを見やがれっ!
- 以上っ!
↓ここからは、説明が欲しい方向け
➊ ダウンロードするべきもの
1.SQLiteForExcel
基本的にはこれだけをダウンロードすればいい
>> SQLiteForExcelのダウンロード(SQLiteForExcel-1.0.zip)
2.SQLite
これをダウンロードする必要は無いはず
SQLite For Excelに同梱されているので、不要と言えば不要
SQLite For Excelに同梱されているsqlite3.dllを違うVerに置き換えるならダウンロードすればいいでしょう
ダウンロードするのはDLL版でいいよ
- sqlite-dll-win32-x86-3200100.zip
- sqlite-dll-win64-x64-3200100.zip
DLL版?EXE版?と悩む人は、EXE版は要らない
- sqlite-tools-win32-x86-3200100.zip
➋ SQLiteForExcelをダウンロードしたら解凍する
- SQLiteForExcel-1.0.zipを解凍する
SQLiteForExcel-1.0/Distribution
のディレクトリ(フォルダ)を開くSQLiteForExcel_64.xlsm
を開く(SQLiteForExcel.xls
でもOK)- ALT+F11
- 標準モジュールの中に
Sqlite3.bas
があるので、それをエクスポート(コピペでもいいよ)
➌ 自分用のExcelファイルを作る
- 自分のExcelファイルに
Sqlite3.bas
をインポート - 自分のExcelファイルと同じディレクトリ(フォルダ)に
SQLite3_StdCall.dll
とsqlite3.dll
をコピペ
※SQLite3_StdCall.dll
とsqlite3.dll
はSQLiteForExcel-1.0/Distribution
の中にある
➍ 自分用のExcelファイルでプログラムを組む
➌までは準備、
ここからがプログラミングの本番
でも、何をどう書けばいいの?
って思うよね
サンプルがあるので、それを見て作ればいいよ
SQLiteForExcel_64.xlsm
を開く(SQLiteForExcel.xls
でもOK)- 標準モジュールの中に
Sqlite3Demo.bas
があるので、それを見る - この辺のプロシージャを参考として見ればいいでしょう
- AllTests()
- TestInsert()
- TestSelect()
➎ Sqlite3Demo.bas
の読み方
TestSelect()
を読んでみましょう
コメントを追いかけてね
' Create the table
' Insert a record
' Select statement
➏ 【ここだけ読んでもオッケー】処理の順番
SQLite3*****
という名前のメソッドを使うよ
※カッコの中は引数だよん
- イニシャル処理
- SQLite3Initialize()
処理正常時に期待する戻り値:SQLITE_OK
- SQLite3Initialize()
- DBオープン
- SQLite3Open(DBファイルのパス, DB用ハンドル)
処理正常時に期待する戻り値:SQLITE_OK
- SQLite3Open(DBファイルのパス, DB用ハンドル)
- CREATE TABLE文実行
※この3つで1セット- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
SQLステートメントの準備
処理正常時に期待する戻り値:SQLITE_OK - SQLite3Step(SQL文用ハンドル)
SQLステートメントの実行
処理正常時に期待する戻り値:SQLITE_DONE - SQLite3Finalize(SQL文用ハンドル)
SQLステートメントの削除(終了処理)
処理正常時に期待する戻り値:SQLITE_OK
- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
- INSERT文実行
※この3つで1セット- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
SQLステートメントの準備
処理正常時に期待する戻り値:SQLITE_OK - SQLite3Step(SQL文用ハンドル)
SQLステートメントの実行
処理正常時に期待する戻り値:SQLITE_DONE - SQLite3Finalize(SQL文用ハンドル)
SQLステートメントの削除(終了処理)
処理正常時に期待する戻り値:SQLITE_OK
- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
- SELECT文実行
※この3つで1セット- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
SQLステートメントの準備
処理正常時に期待する戻り値:SQLITE_OK - SQLite3Step(SQL文用ハンドル)
SQLステートメントの実行
処理正常時に期待する戻り値:SQLITE_ROW
※SELECT結果が複数行ある場合、何度もSQLite3Step
を呼び出す
※戻り値がSQLITE_DONEになればSELECT結果終了 - SQLite3Finalize(SQL文用ハンドル)
SQLステートメントの削除(終了処理)
処理正常時に期待する戻り値:SQLITE_OK
- SQLite3PrepareV2(DB用ハンドル, SQL文, SQL文用ハンドル)
- DBクローズ
- SQLite3Close
トランザクションのやり方は、命令の順序は上記と同じなので省略
↓をダウンロードしてソースコード読んでね
>> ExcelToSQLite.zip
※マクロが入っています。テストはしていないので、動かす場合は各自の自己責任で動かしてください。何か問題が発生しても作者は一切責任を負いません。
DBクライアント
どちらかお好きな方を
A5:SQL Mk-2
PupSQLite
どちらのソフトも寄付を募っています。
ソフトウェアを作るのは結構なお金がかかるので、常用するならぜひぜひお金を支払ってあげてくださいね~♪
僕はA5:SQL Mk-2を常用していますので、少額ながら寄付はしたよーーーん
Excel+SQLiteのレッスンしまっせぇ~♪
この記事読んでもよく分からない方は格安でレッスンしますよぉ~♪
VBAとデータベースを全くまるで何も知らない方でもOK(でもその場合はVBAやデータベースの説明からするので、レッスン回数とか時間が多くなるよ)
ある程度の知識がある方で、あくまでもこの記事に書いてる内容を説明するだけなら1-2回程度のレッスンで終了すると思いますよ
1回50分3,000円(+税)
お気軽にどうぞ!
※本記事の内容をレッスンする場合、無料体験レッスンは適用しません
さいごに、
それに、Excelをデータベースのフロントエンドとして使うと、業務に便利な場面もあるでしょう
また、データベースを使ってみたいけどOracleとかMySQLとかそういったのを導入するのは面倒だ!と思いますよね
最初はSQLiteを使えば対して導入作業も無いので、データベース入門には丁度ええンですよ
一回使ってみてください
プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!
VBA+SQLITEの記事から、こちらにたどり着きました
SQLLITEのコマンドにアクセスする方法をご存知でしょうか?
.mode csv
.import
等でできることがわかったのですが
これをVBAベースでやるとなると、???な状態です
返信遅くなってすみません。
ごめんなさい、分からないです。
どのような動作を実現されようとしていらっしゃるかは分かりませんが、
例えば、.tables等のコマンドを送りたいのであれば、以下の記事が参考になるでしょうか?
https://orebibou.com/2016/04/sqlite3でテーブル一覧を取得する/