【VBA不要】エクセルからSQLiteのデータを参照

2023-12-27

簡単にデータベースを作れるSQLiteですが、入力されたデータを一覧で確認しながらの作業はやはりエクセルの方が使いやすいと思っています。

今回、DokuwikiとStructで作った簡易問い合わせ記録で入力は簡単にできるようになりましたが、集まったデータの分類分けや一覧表も後々必要になる思い、エクセルでSQLiteに接続することにしました。

ODBCドライバはダウンロードする必要がありますが、表示するだけなのでVBAも不要で簡単に参照できます。

基本的にはデータベース自体の編集は行わず、万が一編集が必要な場合は「DB Browser for SQLite」を使う事にしています。

手順

ODBCドライバのダウンロードとインストール

まずはデータベースに接続するためのODBCドライバをインストールしますが、アプリケーションに依存しないODBCドライバは少ないようです。

  • SQLite ODBC Driver ←sqliteodbc_w64.exeを使っています。
    • ただ、サイトの更新はされているようですがHTTPのままなのでダウンロードすると警告が出てきます。
    • 「安全でないファイルをダウンロード」を選ぶとファイルのダウンロードができます。
  • ODBC Driver for SQLite ←未確認
    • こちらは警告は出ないのですが、30 DAYS FREE TRIALと記載されているので購入が必要のようです。

警告が気になる方は費用と相談の上で必要に応じたドライバをダウンロード、インストールして下さい。

以前に調べたODBCのまとめ

ODBCデータソースの作成(重要)

ODBCデータソースは、アプリケーションがデータベースにアクセスするために必要な情報(ドライバファイルやデータベースの場所など)や設定が記録されているファイル(?)です。

エクセルではODBCデータソースを作成できないので(AccessはOK)、エクセルからも使えるようにODBCデータソースを作成します。

「スタートメニュー」ー「Windows 管理ツール」から「ODBCデータソース(64bit)」を起動します。

「ユーザー DSN」は作成したユーザーだけが使うことができるデータソースです。必要に応じて「ユーザー DSN」「システム DSN」を選択して「追加(D)」から作成していきます。

セットアップするドライバは、先ほどダウンロード・インストールしたSQLite3 ODBC Driverを選択します。

次に、識別しやすいDSNの名前をつけた後、接続したいデータベースを選択します。

今回はDokuWikiで編集されるデータベースを参照したかったので、「dokuwiki」ー「data」ー「meta」に保存されているstruct.sqlite3を選択しています。

以上でデータソースの設定は終了のため、次はエクセルで操作をします。

エクセルからの接続と参照

リボンの「データ」から「データの取得」ー「その他のデータソースから」ー「ODBCから」を選択します。

データソースを選択する画面になるので、先ほど設定したODBCデータソースを選びます。

OKを押すとユーザー名、パスワードを入力する画面にかわりますが、SQLiteはユーザーの指定は無いため数字でも適当な文字でもなんでもいいので入力してください。

無事に接続ができると、データベースのテーブル、プレビューが表示されるため必要なテーブルを選択して「読み込み」をクリックします。

エクセルのシートにデータが表示されるので、必要に応じて集計や加工をしてください。

注意点としてはエクセルではデータが表示されているだけになっているので、セルの内容を変更してもデータベースの値は変わりません。

エクセル上で変更した後にデータを更新してしまうと、変更箇所が消える(データベースの値に戻る)ので気を付けて下さい。あくまで元のデータを更新するだけで、編集内容でデータベースを更新(update)するわけではありません。

備考

今回はエクセルで接続していますが、もちろんMicrosoft AccessやLibreoffice Baseでも接続できますし、データベースソフトではデータの更新(update)もできます。

ただ、今回のstructで作ったデータベースではエラーになって更新できませんでした。

とは言え、運用面でもデータベースは簡単に記録できる事を目的にして、集計や分類は必要に応じてその都度行うことにしているので業務には特に支障は無いと言うことで原因の追跡や対策はしていません。

情報システム部門からは嫌がられそうですが、現場で小さいツールを簡単に作れるようになると結構便利です。