ExcelからDBのデータを取得する
データベースのデータをExcelで加工できれば、帳票や分析作業をExcelに任せることができて便利だ。
実現方法はいろいろある。かつてはHTML(今ならxml)形式に出力したテーブルをExcelに取り込んでいた。べたな方法ならCSVに吐き出してExcelに取り込む方法もある。
Excelデータベースクエリの設定
ここではExcelの外部データの取り込みの中からデータベースクエリで取り込む方法を採用した。
ExcelにMicrosoftクエリがインストールされていること。標準インストールではクエリは設定されていない。データ>外部データの取り込みを選択する。インストール画面が出たら、インストールCDをセットしてしばらく待つ。
Excelデータベースクエリを使う
設定が終われば、データベースクエリが使える。データ>外部データ>データベースクエリを選択する。ODBC>テーブル>フィールドと選択する。範囲抽出条件や並び順も指定できる。
Excelで抽出条件を可変的に指定する
範囲抽出条件がミソ。使うたびに条件がExcel側で変更できなければ実用上意味がないからだ。
データ>クエリの編集を選択して、クエリ画面を開き、おなじみのACCESS風クエリ画面で条件をパラメータにする。between [開始番号] and [終了番号] など。
この状態で、ファイル>実行結果をExcelに返す を実行してもExcelに反映されているが、毎度こんな操作をするわけにはいかない。クエリにパラメータを設定したら、Excelでデータ>パラメータを選択し、設定したパラメータの値をどこから取得するかを指定する。セルの値を選択し、Excelのどこかのセルを指定して、セルの値が変更されたらデータを更新にチェック。
これでExcelを開いたときは前回保存されたパラメータで抽出し、指定のセルの値を変更すると、即座に指定値で再クエリが実行され、データを取得しなおす。サーバに負荷をかけないためには、Excelを開いたときや、セルの値を変えたときではなく、明示的に取得したほうが良いだろう。
Excelとデータベースを連動して
これでデータの管理は本格DBで、データの加工、印刷、分析はExcelで という使い分けができる。Excelに印刷レイアウトを設定しておけば、システムで帳票を作ることもない。非定型業務もExcelに任せれば、使う側も、作る側も楽になる。
以上、Excel2000,2003で確認済み。2007は当分使わないので未確認。