SQL Server(MSDE)やOracle、MySQL、PostgreSQLなどのデータベース・サーバを、業務システム上で使用するケースは少なくない。Excelには、データベースからデータを抽出する機能が用意されている。これを利用すれば、さまざまなデータベースからデータを取り出し、Excelで加工できる。
対象ソフトウェア:Excel 2000/Excel 2002
業務システムなどでは、データリソースの多くが「データベース・サーバ」に格納されている。そして、一般的には何らかのアプリケーションを介して、オンライン画面上でデータを参照したり、ダウンロードしたりできるようになっている。
しかし、ときとして、あらかじめシステム部門によって提供されているアプリケーション(システム)の機能を超えて、自由にデータを参照したいというケースは少なくない。具体的には、Excelを利用して、データを加工したり、グラフを作成したりといった要求が多いだろう。そこで本稿では、MSDE(SQL Serverと互換性を持つデータエンジン。同時アクセス・ユーザー数やデータ容量が限られるほかは、ほぼSQL Serverと同等の機能を持つ)を例に、データベースからデータを抽出し、ワークシート上に表示するサンプルをご紹介することにする。
なお、本稿では割愛するが、MSDEはあらかじめ環境上にインストールされている(もしくはネットワーク上に存在する)ものとする。MSDEを始めとするデータベースのインストール方法や、環境設定の方法などについては、Insdier.NETで公開されている記事「ASP.NETで学ぶVisual Studio .NETの魅力」や専門書籍などなどを参考にしてほしい。
本稿で紹介するサンプルを利用するためには、データベースへの接続を担う「Microsoft Query」の機能がExcelに組み込まれていることが前提となる。「Microsoft Query」が組み込まれていない場合には、コントロールパネルの[プログラムの追加と削除]からOfficeの項目を選択し、必要なモジュールの追加を行ってほしい。Microsoft Queryは、インストーラの「Officeツール」グループに含まれている。また、モジュールの追加後は、Excelの[ツール]−[アドイン]メニューから「MS Queryアドイン」を追加すること。
データを読み込む既存のExcelブックを開くか、新しいブックを開き、メニューバーから[データ]−[外部データの取り込み]−[新しいデータベースクエリ]を選択する(ブックをまったく開いていない状態では、このメニュー項目は無効になっている)。
すると[データベースの選択]ダイアログが表示される。このダイアログには、すでに作成済みのデータ・ソースが一覧表示されるので、既存のデータ・ソースをアクセスするならその中から対象となるデータ・ソースを選択する。新規にデータ・ソースを作成する場合は、一覧にある「<新規データソース>」を選択して[OK]ボタンをクリックする(今回は新規作成するものとして説明を進める)。すると次の[新規データ・ソースの作成]ダイアログが表示される。
ここでは、名前を付けて新規データ・ソースを作成する。アクセスするデータベースの種類により、ドライバを選択する必要がある。デフォルトでは、Access、ODBC for ORACLE、SQL Serverなどを選択可能である。
設定項目 | 設定値 | |
---|---|---|
データ・ソース名 | office(任意の値) | |
ドライバ | SQL Server(MSDEの場合もこれを指定する。そのほかのDBの場合は適宜対応するドライバを選択する) | |
接続 | サーバ:localhost(MSDEサーバ名) | |
ログインID:sa(ユーザー名) | ||
パスワード:(ブランク) | ||
標準のテーブル | 任意のテーブル | |
上記の例では、ローカル・マシン上にMSDEがインストールされているものと仮定している。ログインIDやパスワードはデフォルト状態のものを使用しているが、ネットワーク上で運用中のサーバーにアクセスする場合には、適宜、接続設定を管理者に確認してほしい。
すべての入力が終わったら、[OK]ボタンをクリックし、データベースへの接続を確立する。
接続を確立したら、クエリー・ウィザードを利用して、データを抽出するためのクエリーを定義する。これにより、テーブル内の特定の列や、特定の条件を満たすレコードの情報だけをExcelに取り込むなどが可能になる。
ここで、参照したいテーブルの列(フィールド)を選択する。(1)の部分にはテーブル一覧がツリー表示される。ツリーを展開すると、そのテーブルに含まれる列が一覧表示される。ここで任意の列(またはテーブル)を選択して(2)の[>]ボタンをクリックすることで、選択した列をがクエリ列として確定する。テーブル名を選択したときには、テーブル内部のすべての列が対象となる。
抽出する列が決まったら、[次へ>]ボタンをクリックし、次にデータの抽出条件やソートキーを設定する。
この[データの抽出]ダイアログでは、抽出列の中から抽出条件を設定したいフィールドの名前を選択し、条件式を入力する(特定の値に一致する場合、特定の値より大きい場合などを指定できる)。抽出条件が設定されたフィールド名は太字に変更される。例えばこの画面では、price列の値のうち、2000より大きいものだけを抽出する指定を行っている。
複数の条件を指定したければ、「AND」または「OR」を選択して、次の条件を指定する。
抽出条件と並べ替えの設定が完了したら、最後に抽出したデータをどのように扱うかを設定できる。
抽出結果のデータをそのままExcelにインポートしてもよいし、Microsoft Queryと呼ばれるツールを介してより細かなクエリー条件の編集を行うことも可能だ。また、[クエリの保存]ボタンをクリックすることで、今回の抽出条件を保存しておき、後からこれを再利用したり、加工したりすることもできる。
このうち今回は[Microsoft Excelにデータを返す]を選択する。すると次のような[Microsoft Excelへの外部データの取り出し]ダイアログが表示されるので、ここでは[既存のワークシート]を選択し、「=dbQuery!$A$1」をセットする。つまり、既存ワークシート「dbQuery」のセルA1を基点に抽出されたデータが出力される。
以上でデータが抽出され、ワークシートに読み込まれる。こうしてワークシートに読み込まれたデータはExcel上で自由に編集することができる。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.