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)をクリックする。
(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」が表示される(列名はあくまで例です)。
(11) 【画像↑】Microsoft Query。クエリを実行してみたところ結果を得ることができました。Microsoft Queryの画面では日本語が文字化けしていますが,Excelにデータを返すと文字化けは解決されます。
Excel 2007の場合
【追記 21 AUG 2009】リボンより,「データ→外部データの取り込み→その他のデータソース→Microsoft Query」を選びます。以後の手順は,Excel 2000/2003の場合と同じです。注意点として「データ→接続→ブックの接続」を選んではいけません。機能もダイアログの見た目もなんだか似ていますが,データソースを選択した時点で,「このデータソースには表示できるテーブルがありません。」が表示されて先に進めません。