人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel2007で、ODBC接続を使用し、SQLserver2005に接続したいと思います。(VBAを使用して)
ネットでサンプルを見て試したのですが、接続ができなくて困ってます。
サンプルは
http://firebird.skr.jp/wiki/Excel%20VBA%A5%B5%A5%F3%A5%D7%A5%EB(ADO%A1%A2ODBC)
を参考にしましたが、どうもうまくいきませんでした。

500文字制限に引っ掛かるので、お手数ですが下記のURLで確認お願いします。

http://kiasfactory.blog.shinobi.jp/Entry/130/

これができると結構仕事が楽になりそうなのです。よろしくお願いします。

●質問者: きあ
●カテゴリ:コンピュータ
✍キーワード:A1 ODBC URL VBA ネット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● AZUY
●15ポイント

http://home.att.ne.jp/zeta/gen/excel/c04p03.htm

◎質問者からの返答

このサイト、一応目を通してあります。

改めて確認してみようと思います。


2 ● cx20
●50ポイント ベストアンサー

VBA から SQL Server に接続する為には、ADO 経由で接続することになりますが、

接続に使用するプロバイダ(ドライバ)によって「接続文字列」の指定方法を変える必要があります。


「接続文字列」とは、db.Open "接続文字列?" で指定する文字列(接続設定情報)のことです。

ADO 経由で SQL Server に接続するときの接続文字列としては主に以下の組み合わせが使用されます。



> 'DB接続とデータ取得

> このDLL自体がないんですよ…。ほかのDLL使ったり書き方かえたりするのでしょうか。


kia_44 さんの指定された「fbclient.dll」という DLL は、

「Firebird/InterBase」という DB 用の ODBC ドライバとなりますので、

残念ながら「SQL Server」に接続することはできません。


以下は、SQLOLEDB、MSDASQL を使用した「接続文字列」の例です。

MSDASQL(ODBC 用 OLE DB プロバイダ)は、今後(64bit OS 等)は非推奨となっているようですので、

SQLOLEDB(SQL Server 用 Microsoft OLE DB プロバイダ)を使用することをお勧めします。

■ Microsoft OLE DB Provider for SQL Server(SQLOLEDB)
http://msdn.microsoft.com/ja-jp/library/cc426831.aspx

[MSDN ライブラリ]
 +-[Win32 および COM 開発]
 +-[Microsoft Data Access Components (MDAC)]
 +-[SDK ドキュメント]
 +-[ADO]
 +-[Microsoft ActiveX Data Objects (ADO)]
 +-[ADO プログラマーズ ガイド]
 +-[セクション V:付録]
 +-[付録 A:プロバイダ]
 +-[Microsoft OLE DB Provider for SQL Server]

接続文字列の例:
"Provider=SQLOLEDB;Data Source=<server>;Initial Catalog=<database>;User ID=<user>;Password=<password>"

Provider … SQLOLEDB(Microsoft OLE DB Provider for SQL Server)を指定します
Data Source … サーバー名を指定します(「Server=<server>」と記述することも可能です)
Initial Catalog … データベース名を指定します(「Database=<database>」と記述することも可能です)
User ID … SQL Server 認証のユーザー名を指定します(「UID=<user>」と記述することも可能です)
Password … SQL Server 認証のパスワード名を指定します(「PWD=<password>」と記述することも可能です)

kia_44 さんの環境(SQL Server 2005)での接続文字列(SQLOLEDB 経由)の例:
"Provider=SQLOLEDB;Server=EE\SQLEXPRESS;Database=master;UID=sa;PWD=pass"
■ Microsoft OLE DB Provider for ODBC(MSDASQL)
http://msdn.microsoft.com/ja-jp/library/cc426827.aspx

[MSDN ライブラリ]
 +-[Win32 および COM 開発]
 +-[Microsoft Data Access Components (MDAC)]
 +-[SDK ドキュメント]
 +-[ADO]
 +-[Microsoft ActiveX Data Objects (ADO)]
 +-[ADO プログラマーズ ガイド]
 +-[セクション V:付録]
 +-[付録 A:プロバイダ]
 +-[Microsoft OLE DB Provider for ODBC]

DSN または FileDSN を指定する場合の構文:
"[Provider=MSDASQL;] { DSN=name | FileDSN=filename } ; [DATABASE=database;] UID=user; PWD=password"

DSN を指定しない場合の構文 (DSN なしの接続):
"[Provider=MSDASQL;] DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password"

kia_44 さんの環境(SQL Server 2005)での接続文字列(ODBC 経由)の例:
"Provider=MSDASQL;DRIVER={SQL Server};Server=EE\SQLEXPRESS;Database=master;UID=sa;PWD=pass"
<参考情報>
■ InterBase - Wikipedia
http://ja.wikipedia.org/wiki/InterBase
■ データ アクセス テクノロジのロードマップ(MDAC)/ 非推奨の MDAC コンポーネント等
http://msdn.microsoft.com/ja-jp/library/cc407910.aspx

3 ● りゅう
●30ポイント
Set conn = New ADODB.Connection
conn.Provider = "SQLOLEDB"
conn.ConnectionString = "Server=.?SQLEXPRESS;" & _
 "Database=master;" & _
 "uid=sa;" & _
 "pwd=pass"
conn.Open

です。詳細は以下をどうぞ。


MSDN ライブラリ: ADO プログラマーズ ガイド: 付録 A: プロバイダ Microsoft OLE DB Provider for SQL Server

http://msdn.microsoft.com/ja-jp/library/cc426831.aspx

MSDN ライブラリ: ADO プログラマーズ: ADO API リファレンス

http://msdn.microsoft.com/ja-jp/library/cc408215.aspx


とはいえServerキーワードに指定するものの詳細が書かれていないのがアレですが、基本的にはホスト名またはIPアドレスを指定します。SQL Severのインスタンスに名前がついている場合はサーバ名とインスタンス名を \ で繋げたものを指定します。Express Editionの場合は漏れなくインスタンスにSQLEXPRESSという名前がついているので、この指定が必要です。サーバが自分自身の場合はサーバ名は . で行けるらしいのですが、駄目だったら普通にホスト名を指定してください。

◎質問者からの返答

回答ありがとうございます。

MSDNって正直探しにくいですよねぇ。あと、読んでも理解できないことも多々あり…。

あらためてちゃんと理解する際に使用したいと思います。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ