2007-04-22  ExcelからSQLiteのデータベースに接続する

SQLiteのデータベースからExcelの表に株価データを引き出して,チャートを作りたいと思いました。

ExcelからSQLiteを使うには,SQLite用のODBCドライバをインストールすればよいらしい。ODBCドライバのインストールは簡単でした。ところが「外部データの取り込み」をしようとしたら接続時にエラーが発生してしまい,うまくいきませんでした。試行錯誤した結果,接続に成功したので経緯を残しておきます。(「外部データの取り込み」って初めて使ったもので,じつはこの動作で正常なのかもしれません。)

確認環境

  • Microsoft Excel 2000(Windows 2000 Professional SP4)
  • Microsoft Excel 2003(Windows XP HOME SP2)
  • SQLite ODBC Driver 0.74(EXEファイル版)
  • SQLite Version 3.2.7 (Windows)で作成したデータベースファイル

環境が違うと再現しないのかもしれません。この業界そういうものです(なぞ)。

再現手順

(1) ODBCドライバのインストール。「SQLite ODBC Driver」のページからEXEファイルをダウンロードし,実行する。

――以後はExcelを起動してからの操作です。

(2) 新規データソースの作成(1/3)。ファイルメニューより「データ(D)→外部データの取り込み(D)→新しいデータベースクエリ(N)」をする。

データソースの選択

(3) 【画像↑】新規データソースの作成(2/3)。「新規データソース」を選択しOKをクリックする。

新規データソースの作成

(4) 【画像↑】新規データソースの作成(3/3)。新規データソース名に任意の名前(この例では「TRADE」),ドライバは「SQLite3 ODBC Driver」を選択する。接続(C)をクリックする。

SQLite3 ODBC Driver Connect

(5) 【画像↑】SQLite3 ODBC Driver Connect。「Database Name」にSQLiteのデータベースファイルを入力する。そのほかの入力項目はひとまず空欄でも問題なさそうです。

データソースの選択

(6) 【画像↑】データソースの選択。データベースの一覧に「TRADE」が現れる。TRADEを選択してOKをクリックする。

このデータソースには、表示できるテーブルはありません。

(7) 【画像↑】エラーメッセージ。「このデータソースには、表示できるテーブルはありません。」が表示される。OKをクリックする。

クエリウィザード - 列の選択

(8) 【画像↑】クエリーウィザード列の選択。たしかにテーブルが空である。オプション(O)をクリックする。

テーブルオプション

(9) 【画像↑】テーブルオプション。「表示」領域の「テーブル(T),ビュー(V),システムテーブル(S),同義語(Y)」のチェックを外して,OKをクリックする。「クエリーウィザード列の選択」に戻ったらもう一度,オプション(O)をクリックする。今度はテーブル(T)をチェックし,OKをクリックする。

――チェック項目はどれでも構いません。ようはテーブルオプションの更新を通知すればよいみたいです。

クエリウィザード - 列の選択

(10) 【画像↑】クエリーウィーザード列の選択。「使用可能なテーブルと列」に「history」と「stock」が表示される(列名はあくまで例です)。

Microsoft Query

(11) 【画像↑】Microsoft Query。クエリを実行してみたところ結果を得ることができました。Microsoft Queryの画面では日本語が文字化けしていますが,Excelにデータを返すと文字化けは解決されます。

Excel 2007の場合

【追記 21 AUG 2009】リボンより,「データ→外部データの取り込み→その他のデータソース→Microsoft Query」を選びます。以後の手順は,Excel 2000/2003の場合と同じです。注意点として「データ→接続→ブックの接続」を選んではいけません。機能もダイアログの見た目もなんだか似ていますが,データソースを選択した時点で,「このデータソースには表示できるテーブルがありません。」が表示されて先に進めません。