Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。

VBAからデータリンク プロパティ ダイアログを表示する

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オブジェクト

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を呼び出しています。

 

トラックバック


URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。