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/

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

回答の条件
  • 1人10回まで
  • 登録:2009/05/05 22:25:28
  • 終了:2009/05/08 10:26:30

ベストアンサー

id:cx20 No.2

cx20回答回数607ベストアンサー獲得回数1082009/05/06 18:34:38

ポイント50pt

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

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


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

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


  • ADO + SQLOLEDB(SQL Server 用 Microsoft OLE DB プロバイダ)
  • ADO + MSDASQL(ODBC 用 OLE DB プロバイダ)+ ODBC + {SQL Server}(SQL Server 用 ODBC ドライバ)

> '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

その他の回答(2件)

id:AZUY No.1

AZUY回答回数343ベストアンサー獲得回数122009/05/05 22:57:00

id:kia_44

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

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

2009/05/06 14:22:04
id:cx20 No.2

cx20回答回数607ベストアンサー獲得回数1082009/05/06 18:34:38ここでベストアンサー

ポイント50pt

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

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


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

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


  • ADO + SQLOLEDB(SQL Server 用 Microsoft OLE DB プロバイダ)
  • ADO + MSDASQL(ODBC 用 OLE DB プロバイダ)+ ODBC + {SQL Server}(SQL Server 用 ODBC ドライバ)

> '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
id:rryu No.3

りゅう回答回数30ベストアンサー獲得回数22009/05/06 19:26:25

ポイント30pt
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という名前がついているので、この指定が必要です。サーバが自分自身の場合はサーバ名は . で行けるらしいのですが、駄目だったら普通にホスト名を指定してください。

id:kia_44

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

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

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

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

2009/05/08 10:23:07
  • id:taknt
    http://www.cocoaliz.com/excelVBA/index/10/

    こちらので できる?
  • id:kia_44
    taknt さん
    回答に書かないとポイントが~。
    見て試してみます。
  • id:kia_44
    >>
    'DB接続とデータ取得
    ・SERVER=EE¥SQLEXPRESS   でいいですか?
    ・DATABASE=master       でいいですか?
    ・UID=sa            ODBC接続のログインIDですよね?
    ・PWD=pass           ODBC接続のPASSでいいですよね?
    ・Client=C:\Program Files\Firebird\Firebird_2_0\bin\fbclient.dll このDLL自体がないんですよ…。ほかのDLL使ったり書き方かえたりするのでしょうか。
    その場合何を指定してやるんでしょうか。
    <<

    という言質問に対して、URLだけってことは「ここから調べろって意味」ですよねえ。
    でも、質問者としては上記の部分の回答を求めているのですよね…。

    ちなみに、思いつく限りのワードで一通り検索はしてみました。

    お二人ともありがとうございます。とりあえずポイント入れますけど納得できる「回答」ではないです…。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません