SQLの窓 イラストAC フリー素材

2009年10月28日

VBS : SQLServer : Microsoft.Jet.OLEDB.4.0を使った必殺技。Excelへ入出力


VBS : SQLServerよりExcel へエクスポート(Excel製品は必要ありません)


この方法は気がつきにくいんですが、とても便利です。SQLServer というよりも、Microsoft の
JET を中心として、SQLServer と Excel に外部リンクを動的に作る方法です。元々、Access の
外部リンクの仕様から来てるので、別々の DB 間で結合という結構とんでもない処理も可能です。

接続文字列の仕様はそもそも、DAO から来てまして、Access の SQL では in 句による外部
参照もありますが、こちらのほうが何でもありです。というか、Access で外部リンクを作成して、
システムテーブルの接続情報を見てもらうと解りますが、こうなってますので。

これ使うと、ODBC ドライバさえちゃんと作られておれば、Access の SQL で全ての DB と同時
結合やら select into やらできるので、運用する立場の人は泣いて喜ぶと思います。
で、この処理は10年以上前から使ってますが、ちゃんと書くのは初めてですね・・・そういえば。

Oracle はちょっとクセがあります。接続文字でユーザ(スキーマ) を指定しているにもかかわらず、
さらに修飾としてスキーマ名を続けないと、別スキーマで同一オブジェクト名があるとエラーになります。
どちらかというと、Microsoft の ODBC ドライバのほうが信頼感あります。Oracle に対するドライバ
は、Framework でも用意しているところから見ても、きちんと Microsoft の看板かかげてサポート
しています。昔は、精度のある列名でまともに動かなかったので、Oracle に対するいやがらせかいな・・・・
なんて思った時期もありました。現場でそういうトラブルは実際にありましたし。




SQLServer の OPENDATASOURCE 関数による Excel の参照


もう一つは純正接続で、外部のデータソースを見に行く方法です。
こちらは読み込むだけでせいいっぱいというか、デフォルトでは使え無い上に、
「できれば使わせたく無い」という主旨がミエミエのものになっていますが、
解る人ならすぐ使えます。でも、JET 使ったほうがいいと思いますけれど。




【VBScriptの最新記事】
posted by at 2009-10-28 19:41 | VBScript | このブログの読者になる | 更新情報をチェックする