連載
» 2005年08月06日 00時00分 公開

お手軽が一番、ExcelをOracleクライアントにExcel‐Oracle連携(2)(3/3 ページ)

[宮本尚志,@IT]
前のページへ 1|2|3       

KeySQLを使用する方法

 KeySQLは、Oracleデータベースのデータを検索してExcelに出力したり、ExcelからOracleデータベースのデータを更新できるGUIツールです。KeySQLを使用すれば、簡単な操作で、複雑な検索も行うことができます。KeySQLを使用する検索方法は2通りで、KeySQLのGUIを使用して検索する方法と、KeySQLでVBAから実行可能なマクロを生成し、それを使用してExcelから検索する方法があります。

事前準備

 この方法では、Oracle ClientとKeySQLがクライアント側にインストールされている必要があります。KeySQLはOracleデータベースとは別に購入する必要がありますが、体験版をダウンロードして試すことも可能です。

KeySQLのGUIから検索

 前述のとおり、KeySQLはGUIツールであるため、GUI画面からマウス操作でOracleデータベースのデータを検索することが可能です。以下のようなGUIから検索を行うことになります。

図1 KeySQLのGUI画面 図1 KeySQLのGUI画面

 検索結果をどこに出力するかは、画面上部で指定することになります。Excelシートに出力する場合、どのブックの、どのシートの、何行何列目か、という指定が可能です。Excelシートに出力せず、CSVファイルや、表形式のHTMLファイルとして出力することも可能です。

 複数の表の結合や、グループ関数を使用した検索なども、マウス操作で行うことができます。また、実際にどのようなSQL文が実行されるかを確認したり、SQL文を手入力して実行することも可能なので、KeySQLから実行されたSQL文を一部書き換えて実行するというようなことも可能です。また、KeySQLを使用すると、Oracleデータベースの表を基にクロス集計を非常に簡単に行うこともできます。あらかじめExcelシート側でグラフの設定などを行っておけば、検索結果がExcelシートに出力されると同時にグラフが自動表示される、ということも可能です。

KeySQLのマクロで検索

 マウス操作で検索できるのは便利ですが、定型的な検索などをKeySQLの画面上で毎回行うのは面倒です。同じ処理を繰り返し実行するような場合は、KeySQLでの操作をマクロ化して使用することが可能です。KeySQLの画面から、「ファイル」→「マクロファイルに保存」を選択することで、KeySQLでの操作をマクロ化し、KeySQLで読み込んだり、Excelのマクロに組み込んで実行することも可能です(図2)。マクロに保存する際にさまざまなオプションを指定することができますが、Excelのマクロに組み込んで使用する場合は、「作成方法」内の設定を図2のように選択しておくと便利です。

図2 KeySQLのオプション指定サンプル 図2 KeySQLのオプション指定サンプル

 図2のオプション設定でマクロを生成すると、Excelから直接実行可能なVBAのプロシージャ(リスト4)と宣言部が生成され、クリップボードにコピーされます。後は宣言部をExcelマクロの標準モジュールとして入力し、リスト4のマクロをExcelから実行するだけで、Oracleデータベースに対して検索処理が行われ、結果をExcelシート上に取得することができます。

'宣言部は省略
Public Sub KeySQLサンプルマクロ()
    Windows("Book1").Activate
    Sheets("Sheet1").Activate
    Range("A1").Activate
    On Error GoTo CloseAndQuit
    ' データベースへログインします。
    Status = KeySQLConnect("orcl", "scott", "tiger", "", "", "")
    If IsError(Status) Then GoTo CloseAndQuit
    On Error GoTo CloseAndQuit
    ' シートの初期化を行います。
    Status = KeySQLClear()
    If IsError(Status) Then GoTo CloseAndQuit
    ' 検索に使用するテーブルを指定します。
    Status = KeySQLFrom("商品情報, 商品分類")
    If IsError(Status) Then GoTo CloseAndQuit
    ' 選択カラムの指定を行います。
    Status = KeySQLSelect(1, "商品情報.商品ID", "", "", "", False, True)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(2, "商品情報.商品名", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(3, "商品情報.内容量", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(4, "商品分類.分類名", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(5, "商品情報.内容量単位", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(6, "商品情報.原材料", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(7, "商品情報.保存方法", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(8, "商品情報.賞味期限", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    Status = KeySQLSelect(9, "商品情報.価格", "", "", "", False, False)
    If IsError(Status) Then GoTo CloseAndQuit
    ' 実行するシートを指定します。
    Status = KeySQLActiveSheet("一覧")
    If IsError(Status) Then GoTo CloseAndQuit
    ' 検索条件の指定を行います。
    Status = KeySQLCondition("J", "商品分類.分類ID = 商品情報.分類ID")
    If IsError(Status) Then GoTo CloseAndQuit
    ' 検索したデータの貼り付け先を指定します。
    Status = KeySQLExecute("[Book1]Sheet1", "A1", 0, 0)
    If IsError(Status) Then GoTo CloseAndQuit
    ' データベースからログアウトします。
    Status = KeySQLLogout()
CloseAndQuit:
End Sub
リスト4 KeySQLから生成されるマクロ(表示の都合で改行されています。コードはlist04から確認できます)

 このように、GUI操作のみで簡単にマクロを生成することができ、生成されたコードはまったく変更せずにExcelから実行可能です。本記事掲載時点で最新版のKeySQL R5.1を使用すると、リスト4のようにマクロ内にコメントも出力されるので、コードの編集も容易です。

 KeySQLでは、このようにGUI操作での検索を行うことも可能ですし、マクロを自動生成することも可能なので、システム管理者はKeySQLのGUIを操作し、ユーザー部門はExcelでKeySQLから生成されたマクロを使用する、という使い分けが可能です。検索のみならず更新も可能です。

 さらに、KeySQL R5.1では、データベース内の表を誤って更新してしまっても過去の状態に戻すことができる「フラッシュバック・テーブル」機能をマウス操作で行えたり、Excelを使わなくても表のデータを確認・変更することができます。マスタ表のメンテナンスには最適なツールといえます。

セキュリティ対策

 いままで見てきたように、さまざまな手法を用いることで、ExcelからOracleデータベースのデータを取得することが可能です。これは非常に便利である半面、セキュリティが問題になることもあります。Excelでデータを取得できてしまうと、そのデータをメディアに保存して持ち出すことも容易です。データ取得者に悪意がなくても、PCがウイルスに感染してしまうと、ローカルディスクに保存していただけで情報が漏えいする可能性もあります。

 これらのリスクを最小限にするためには、クライアント側、データベース・サーバ側両方で対策が必要になります。クライアント側では、Excelシートの保存、コピー&ペースト、印刷の禁止といった対策や、そもそもローカルディスクを持たないシンクライアントの使用などが考えられます。

 データベース・サーバ側では、厳密なアクセス制御、ユーザー情報管理の徹底、監査の実施などを検討する必要があります。Oracleデータベースにはこれらを実現する機能が実装されているので、適切に設定をしてセキュリティ対策を施すことが重要です。

まとめ

 今回はExcelからOracleデータベースのデータを取得する方法を紹介しました。次回はExcelからOracleデータベースのデータを更新する方法について紹介します。ご期待ください。(次回に続く)


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。