SQL查询在excel 2010中无法正常工作

时间:2015-09-03 22:54:20

标签: sql excel-vba excel-2010 vba excel

我写了一个实验室已经使用了2年的“VBA”,基本上使用了访问数据库作为查询。最近,正在使用SQL数据库,并创建了一个ODBC以在查询中使用。问题是除了我的计算机外,excel无法查看查询。我有SQL Management Studio 2008,但我似乎无法让查询在其他计算机上运行。我尝试了不同的驱动程序,但无法解决这个问题。

1 个答案:

答案 0 :(得分:2)

这不是一个无法找到的“ODBC驱动程序”;它是您创建的DSN文件(带有凭据),它是您计算机的本地文件。您需要在VBA模块中携带的连接字符串中拼出每个标记。

Sub sql_connect()
    Dim svr As String, db As String, usr As String, pwd As String
    Dim sCNX As String, sSQL As String
    Dim cnx As Object, rs As Object


    Set cnx = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    svr = "THE_SERVER"
    db = "myDatabase"
    usr = "me_user"
    pwd = "me_users_pwd"
    sCNX = "Provider=SQLNCLI11;Server=" & svr & ";Database=" & db & ";UID=" & usr & ";PWD=" & pwd & ";"
    'Debug.Print sCNX 'used for syntax checking
    cnx.Open sCNX

    sSQL = "SELECT TOP 50 * FROM [myDatabase].dbo.[myTABLE]"
    rs.Open sSQL, cnx

    Do While Not rs.EOF
        Debug.Print rs(0) & " - " & rs(1)
        rs.movenext
    Loop

    rs.Close: Set rs = Nothing
    cnx.Close: Set cnx = Nothing

End Sub

有一些方法可以隐藏您提供的凭据;使用密码锁定您的VBA项目将是一个开始。创建具有有限只读访问权限的MSSQL用户也是一个很好的步骤。

我不确定它是否明显,但该用户和密码是SQL用户凭据,而不是使用可信连接的域用户。