2

以下のマクロは、WindowsXP32ビットマシンのMicrosoftExcel2003で作成しました。更新ボタンを押すと、スプレッドシートに正しく表示されます。

ただし、これをWindows 7マシンであるユーザーのマシンで実行すると、32ビットと64ビットの両方で次のエラーメッセージが表示されます。

「ランタイムエラー'-2147467259(80004005)':[Microsoft] [ODBCDriverManager]データソース名が見つかりません。デフォルトのドライバーが指定されていません。」

Private Sub CommandButton1_Click()
    Dim cmd As New ADODB.Command
    Dim conn As ADODB.Connection
    Dim prm As ADODB.Parameter
    Dim strConn As String
    Dim strSQL As String
    Dim Rst As ADODB.Recordset
    Dim WSP As Worksheet
    Dim lastRow As Long
    Dim ranges As range



 strConn = "Data Source=;Initial Catalog=;User Id=;Trusted_Connection=False;"
    Set conn = New ADODB.Connection
    Set WSP = Worksheets("KPI")

    lastRow = WSP.Cells.SpecialCells(xlCellTypeLastCell).Row
    Set ranges = WSP.range("A6", WSP.Cells(lastRow, "K"))
    ranges.Clear

    conn.Open strConn

    Set cmd = New ADODB.Command
    cmd.CommandText = "dbo.returns_kpi_data"
    cmd.CommandType = adCmdStoredProc
    cmd.ActiveConnection = conn

    cmd.Parameters.Refresh
    cmd.Parameters("@OrderDate1").Value = WSP.range("G3", "G3")
    cmd.Parameters("@OrderDate2").Value = WSP.range("I3", "I3")


    'Execute the Stored Procedure
    Set Rst = cmd.Execute

    range("A6").CopyFromRecordset Rst


    'Close the connection
    conn.Close
End Sub
4

1 に答える 1

3

SQLServerに接続していると思います。接続文字列を難読化することで、問題を適切に特定するために使用できる情報をすべて削除しました。その文字列にプロバイダーがないため、他のPCでDSNを使用している可能性があります。接続文字列に関する情報は、http://www.connectionstrings.com/で入手できます。

于 2012-07-19T12:13:23.373 に答える