ExcelからMSDE2000に接続する方法

■前回にひきつづき、マイクロソフトが提供している無償のリレーショナルデータベース(SQL Serverの機能限定版のようなもの)MSDE2000について、Windows XPクライアントからODBC設定なしで接続できてしまう方法を追加でご紹介したい。
社内で使っているWindows XPパソコンが、セキュリティ設定上、自分でODBC接続の設定を作成・変更できないようになっている場合がある。このようにセキュリティ制限がかかっている場合でも、Microsoft Excel 2002以上を使えば、ネットワーク経由で別のコンピュータ上にあるMSDE2000に接続できてしまうのだ。
ポート番号の指定もせず、MSDE2000がインストールされているコンピュータのIPアドレスを設定するだけで、なぜかMSDE2000に接続できてしまう。MSDE2000のポート番号は自動で決定されていて、Windows機同士ならいちいちポート番号を指定しなくても勝手に接続してくれるのだろうが、あまり深く考えずに設定方法をご説明する。
(1)Excelを起動する。
(2)「データ」→「外部データの取り込み」→「新しいデータベースクエリ」をクリックする。
(3)すると「データソースの選択」という画面が開くので、ここで「<新規データソース>」という文字をダブルクリックする。
(4)すると「新規データソースの作成」という画面が開く。まず「新規データソース名」として好きな名前を入力する。(例:「MSDE2000」など)
(5)次に「アクセスするデータベースの種類に対応するドライバ」の欄で「SQL Server」を選択する。
(6)次に「接続」ボタンをクリックする。
(7)すると「SQL Serverログイン」という画面が開く。「サーバ」欄にMSDE2000のインストールされているサーバのIPアドレスを入力する。名前解決できるネットワーク構成になっている場合は、サーバの名前でもOK。
(8)次に「セキュリティ接続を使用する」のチェックマークをはずす。
(9)そしてログインIDとパスワード欄に、MSDE2000に登録してあるユーザ名とパスワードを入力する。前回の記事のように「SA」とそれに対応するパスワードしか登録していない場合は「SA」とそのパスワードを入力する。
(10)次に「オプション>>」ボタンをクリックすると下半分の画面が展開する。デフォルトで利用するデータベースを指定したい場合は、「データベース」欄で選択しておく。「言語」欄には「Japanese」を設定し、その他の欄は初期値のままでいいはずなので「OK」ボタンをクリックする。
ちなみに、デフォルトで利用するデータベースを指定しないまま、VBScriptやVisual Basicの中でMSDE2000に接続した後、使用するデータベースを切り替えたい場合は、以下のようなコードを書けばよいだけだ。
Set oConn = CreateObject(“ADODB.Connection”)
Call oConn.Open(”
Call oConn.Execute(“use (データベース名)”)
(11)もとの「新規データソースの作成」画面に戻るので、今後いちいちユーザIDとパスワードを入力したくない場合は「データソースの定義にユーザIDとパスワードを保存する」にチェックマークを入れてから、「OK」ボタンをクリックする。
以上でデータソースが作成される。パソコンに対して管理者権限を持っていなくても、ユーザ権限さえあれば、Excel用のデータソースが作成できてしまうということだ。
このデータソースをつかって、今設定したMSDE2000に接続するには、次のようにすればよい。
(1)同上の「データソースの選択」画面から、いま作成した新規データソースをクリックして反転の状態にする。
(2)同じ画面の「クエリウィザードを使ってクエリを作成/編集する」に好みに応じてチェックマークをつける。つけなかった場合は、「OK」ボタンをクリックすると、すぐにMicrosoft Queryの画面が起動する。ここから先はMicrosoft Accessのクエリ作成と同じ要領で、MSDE2000内にある複数のテーブルを組み合わせてクエリを作成していけばよい。
Microsoft Excelに付属しているMicrosoft Queryは、データベースやクエリから抽出したデータをExcelのワークシートに返すことができるので、簡単なデータ抽出ツールとして活用できる。
XAMPP環境では、ちょっとしたデータ抽出をしたい場合でもPHPスクリプトでCSVファイルを返すプログラムを記述する必要があるし、いくらmyphpadminが使いやすいツールとは言っても、Microsoft QueryのようにGUIでデータベースに対する問い合わせ文を組み立てられるわけではない。
上記の作業には一切文字化けのおそれはないし、結局のところWindowsサーバにWindowsクライアントの組合せを使っている場合は、MSDE2000、Excel、Microsoft Queryと、マイクロソフト製のツールを組み合わせる開発が、悲しいかな最も効率的ということになってしまうのかもしれない。