URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。
ExcelやAccessのVBAから,データベースへ接続する際にADODBのConnectionオブジェクトに渡すためのConnectionString(接続文字列)を用意する必要があります。これをGUIを使って得ることができるのが,データリンク プロパティ ダイアログ です。
これを利用するには,拡張子UDLのファイルを作ってダブルクリックするとダイアログが表示されます。設定を完了してOKをクリックした後のファイルをエディタで開くと接続文字列が格納されていますので,それを利用します。このダイアログをVBAのプログラムの中から呼び出せないでしょうか。
ネットをググってみると,UDLファイルを作って,ShellExecuteでそのファイルを開くというようなテクニックが載っていました。そういえば昔その方法で設定ユーティリティを作ったことがありました。でも,このダイアログどっかのDLLの中に入っているに違いないと思って調べてみたら,やっとわかりました。次の手順で利用できます。
VBEの参照設定で,Microsoft OLE DB Service Componinte 1.0 Type Library を参照するように設定します。これでMSDASCというライブラリが使えるようになります。そこにあるDataLinksオブジェクトで データリンク プロパティ ダイアログ が利用できます。
DataLinksオブジェクトのPromptNewメソッドは,データリンク プロパティ ダイアログを表示して,設定された情報を元にConnectionオブジェクトを返します。ダイアログでキャンセルボタンがクリックされた場合は,Nothingを返します。
Public Function ShowDataLinkPropertyDialog() As String Dim msd As MSDASC.DataLinks Dim con As Connection Set msd = New MSDASC.DataLinks Set con = msd.PromptNew If con Is Nothing Then ShowDataLinkPropertyDialog = "" Else ShowDataLinkPropertyDialog = con.ConnectionString End If Set con = Nothing End Function
上のコードは,データリンク プロパティ ダイアログを表示して,接続文字列を返す関数です。
既にあるConnectionの接続文字列を編集する場合はPromptEditメソッドを使います。PromptEditメソッドにはConnectionオブジェクトを渡します。戻り値はOKボタンがクリックされた場合にはTrueが返されます。
Public Function ShowDataLinkPropertyDialog2() As String Dim msd As MSDASC.DataLinks Dim con As Connection Set msd = New MSDASC.DataLinks Set con = New Connection con.ConnectionString = "Provider=SQLNCLI;" If msd.PromptEdit(con) Then ShowDataLinkPropertyDialog2 = con.ConnectionString Else ShowDataLinkPropertyDialog2 = "" End If Set con = Nothing End Function
上の例は,同様の処理をPromptEditメソッドを使って書いたものです。前の例と動作はほぼ同じですが,違うところがひとつあります。
PromptNewメソッドは新しく接続文字列を作るだけあって,最初に表示されるのはプロバイダのタブですが,
PromptEditの場合は,接続のタブが表示されます。
それぞれのメソッドはこの特徴を踏まえて場面にあわせて使うと良いでしょう。2つめのソースでは,あらかじめプロバイダにSQL Native Client(SQLNCLI)を設定してから,PromptEditを呼び出しています。