お手軽が一番、ExcelをOracleクライアントに:Excel‐Oracle連携(2)(2/3 ページ)
企業の部門内に蓄積された大量のExcelデータをデータベースで管理したい。あるいは、Excelで作成した業務書類からシステムに手作業でデータ入力する工数を削減したい。このようなニーズに応えるべく、OracleデータベースにはExcelからOracleへのさまざまな連携機能が備わっている。(編集部)
マクロを使用する方法
Excelでは、VBAマクロのコードの中にOracleデータベースへの接続や、検索処理の命令を記述できます。コーディングが発生するため、誰でも簡単にできるわけではありませんが、その分柔軟な処理が可能です。
ミドルウェアの選択
この方法では、VBAでOracleデータベースに接続するためのインターフェイスに何を使うかによって、開発手法も異なります。非常に多くのパターンがありますが、主要なものは、
- ActiveXData Objects(以下ADO)からODBCドライバを使用する方法
- ADOからOLE DBドライバを使用する方法
- Oracle Objectsfor OLE(以下oo4o)を使用する方法
の3つです。どれを使ってもExcelのマクロからOracleデータベースのデータを検索できますが、それぞれに特性があるので、違いを理解したうえでどれを使用するか決定することになります。以下に違いをまとめてみました。
連携パターン | メリット | デメリット |
---|---|---|
ADO+ODBC | ・汎用的なADOのAPIを使用して開発できる | ・Oracleデータベース固有のデータ型やパラメータなどが使用できない ・ODBCデータソースの設定が必要 ・ODBCブリッジを介すため、ADO+OLE DBよりパフォーマンスが劣る |
ADO+OLE DB | ・汎用的なADOのAPIを使用して開発できる | ・Oracleデータベース固有のデータ型やパラメータなどが使用できない ・oo4oよりはパフォーマンスが劣る |
oo4o | ・追加的に必要なミドルウェアがないため、バージョン間での整合性などを意識する必要がない ・Oracleで実装されているすべての機能を利用可能 ・PL/SQLを記述可能 ・DAOに類似したインターフェイスを利用し、プロパティ、メソッドを用いることでプログラミングが容易 ・oo4oのパラメータを変更することで、oo4o自体のチューニングが可能、高パフォーマンス |
・Oracle以外のRDBMSには接続できない ・コーディングに使用するメソッドなどはoo4o固有 |
表2 VBAのマクロで使用するミドルウェアごとの違い |
それぞれの開発手法での実際のマクロは以下のようになります。このマクロでは、SIDまたはDSN名がorclであるデータベースに対して接続し、「商品情報」「商品分類」という表から検索した結果をExcelシートの4行2列目に出力します。リスト1?3に掲載しているのは、そのマクロの主要部分を抜粋したものです。赤字部分はそれぞれデータベースユーザー名、パスワード、接続記述子(ADO+ODBCではDSN名)で、環境により異なります。SQL文に日本語の列名や表名などが含まれる場合は、二重引用符「"」で囲むことに注意してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記を一部編集したマクロを含むExcelシートと、表作成用のSQLスクリプトを以下からダウンロードできます。
マクロを使用する方法では、MS Queryよりも柔軟な検索処理が可能です。あらかじめ帳票のようなExcelシートを作成しておき、その中で特定のセルにデータベースからの検索結果を出力することも可能ですし、検索のみならず更新処理を行うことも可能です。クライアントにOracleClientは必要になりますが、マクロを含んだExcelファイルを配布すれば、受け取った人はそのファイルを開いてマクロを実行するだけで、データベースからの検索を行うことが可能です。
ただ、マクロをコーディングするのは手間がかかります。次に説明するKeySQLを使用すると、同等の処理をもっと簡単に行うことが可能です。(次ページに続く)
Copyright © ITmedia, Inc. All Rights Reserved.