SSブログ

excelからDBを見にいくにはどうすんのかなぁ [プログラミング]

DBは何使っているんだかわかんないんだけど、ExcelからRDBを読みに行くという話があった。事前に調べておこうと思ったんだけど、今までAccessでODBCを使ってOracleの中身を見にいったことぐらいしかなくて、VBAとかそんなのは関係なかった。GUIで設定できたので見れば思い出すと思うんだけど、昔の方法論がまだ生きていると言う意味ではOffice VBAと同じなので親和性はありそう。

http://excel.style-mods.net/tips_vbs/vbstips_9-01.htm

つなぐだけなら以下のコードでできるらしい。
Set objConn = CreateObject("ADO.Connection")
objConn.ConnectionString = "DSN=DSN1;UID=user1;PWD=password1;"
objConn.Open


UIDとPWDはDBを使っている人に聞くとして、DSNってなんだっけ?
DSNはたぶんGUIで作ったような気がするな、Accessの時でも。

https://docs.oracle.com/cd/E16662_01/quickstart/html/admin/dsn_setup_windows.html

そうそう、旧態然としたこのGUI。適宜情報を入れていけば自分の作った名前でDSNができたはず。これかどうかはわからないが、今でもODBCデータソース・アドミニストレータってあるのかしら。Macでこれを書いているので、Windows10で入っているのかどうかはよくわからない。まぁ入っていなかったら入れればいいんじゃないかとは思うけどどうなってるのかわからん。

https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/open-the-odbc-data-source-administrator?view=sql-server-ver15

あ〜Windows10でもあるっぽい。まぁそうだよな。これでつなぐ設定はできそうなことはわかった。細かいところの設定がわからないのは別に探そう。



探していたらADOでつないで処理するソースが見つかった。

http://firebirdwiki.jp/webroot/?Excel%20VBA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%28ADO%E3%80%81ODBC%29

ADODB.Connection.OpenにDSNやらの設定を全部突っ込めばいいっぽいが、如何せん細かい文字列をどこから取ってくればいいのかがわからない。ただそれさえわかれば、ODBCデータソース・アドミニストレーターでDSNを設定してあげなくても、そのままVBAを実行してつなぎに行けそうではある。


DSNを設定する場合にはこっちでもできるっぽい。

http://excel.style-mods.net/tips_vbs/vbstips_9-06.htm

DSNを設定した方が楽そうだ。ただポータビリティは無くなる。どっちにせよつなぐだけの用であればDSNをGUIで作った方が早そうだ。どこでも動くようにしろと言われた時には、その時に対応しましょうかね。直でソースに書く文字列の調べ方はおいおいやっていくということで。

ODBCとOLE DBはやり方が違うみたいだけど、イマイチその違いがわかるまで見てない。どっちもADOみたいだしよくわかんないな。とりあえず動かすという観点で動こう。どっちがどうとかはまぁいいや。前に.NETのドライバを使っていると、COMなVBAでは使えんという話があったけれども、対応するDBが昔のままのODBCを使っているといいな。

コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2019/10/24 [Twitter]


コメント(0)