Windows, Excel: データベースから直接値を取得して表示する


Excel で、 データベースから直接値を取得して表示する方法です。 やり方はいくつかあるのですが、ここでは ODBC を利用して接続します。

環境

  • Windows 10
  • Excel 2016
  • PostgreSQL 9.3

ここではデータベースとして PostgreSQL を使っています。 他のデータベースでも基本は同じです。

Excel からの接続設定作成

まずは ODBC の設定をします。 手順は Windows: PostgreSQL の ODBC を設定する を参照してください。

ODBC を設定すると Excel から利用できるようになります。 (OLE DB でもいいのですが、 ここでは ODBC を使用します。)

Excel 上 で、 設定した ODBC への接続設定を作成します。

「データ」リボンから、 ODBC の接続設定ウィザードを起動します。

データソースとして「ODBC DSN」を選択します。 ODBC は Open Database Connection の略、 DSN は Data Source Name の略です。

次へ進むと、自分の作成した ODBC が見えます。 そのなかから、使いたい ODBC を選択して進めましょう。

するとテーブルの一覧が表示されます。

ここで Connect to a specific table のチェックを外します。 日本語版だときっと違う表記になっています。

これで最後です。 ファイル名と表示名(Friendly Name)を変更する場合は変更して、終了します。 この接続設定は、コンピュータ内にファイルとして保存されることになります。

このあとテーブルを選択するダイアログが表示されますので、このまま続けてもいいですし、キャンセルして終了させてもいいです。 ここでは、キャンセルする手順で進めます。 (続ける場合でも、下と同じ手順になります。)

データ取得

先ほど作成した接続を利用して、データベースから値を取得します。

まず、接続を選択します。 リボンメニューの「データ」にボタンがあります。

そして、先ほど作った接続を選択して、「開く(Open)」をクリックします。

するとテーブルを選択するダイアログが現れます。 ひとつのテーブルから取得するならいいのですが、SQLを書いて出力されるデータを表示したいと考えていますので、ここでは何も選ばず「OK」をクリックします。

データをインポートする最終ダイアログが表示されますが、ここで左下のプロパティボタン(Properties)をクリックします。

「定義(Definition)」タブのSQLのところに、自分が取得したいデータのSQLを記述します。

上で定義していた接続設定とは変更になったので、次のような警告ダイアログが表示されます。 「はい(Yes)」をクリックして進めます。

これで完了なので、OKをクリックしてデータがインポートされるのを待ちます。

設定によりますが、デフォルトの設定で、下記のようにデータがインポートされます。

今回はIDのみを10件取得するSQLでしたから、1列のデータになります。

SQLの変更

SQLが間違っていた場合でも修正可能です。 上のテーブルのところにカーソルを合わせて、リボンメニュー「データ」の中から「接続プロパティ(Connection Properties)」をクリックします。

すると先ほどのSQLを入力するダイアログが表示されます。 SQLを変更して「OK」をクリックすると更新されます。

データの更新

データベースの値が更新されたときは、上のテーブルのところにカーソルを合わせて「すべて更新(Refresh All)」をクリックして最新のデータを取得します。

接続の削除

接続を削除するには、まずリボンメニューのデータから接続のリストを出します。

左下にあるボタン「Browse for More …」をクリックします。

ファイルを選択するダイアログが表示されます。そこに、既存の接続設定ファイルもありますので、右クリックから(またはDeleteキーで)削除します。