【问题标题】:Connect to SQL Server in VBA if the server requires specific username and password?如果服务器需要特定的用户名和密码,请在 VBA 中连接到 SQL Server?
【发布时间】:2021-03-02 07:40:04
【问题描述】:

我今天意识到,当您在 Excel 的本机连接中连接到 SQL Server 数据源时,它不允许您输入特定的用户名和密码。它只是询问服务器名称和数据库。

在 VBA 中,假设我想将 SQL Server 数据查询中的数据导入 Sheet1,你能帮我理解如何编写该代码吗?

出于本练习的目的:

SQL Server Connection INFO
    Server Name:  TestingS,1633
    Database Name: CarSales
    username:  car
    password: sales
    
    The query I want to run for simplicity sake can be:  "select * from table"

我一直在做一些研究,但有点迷失了。我通过 ODBC 使用自定义 SQL 设置标准查询没有问题,但是因为我需要 VBA,所以这对我来说非常棘手。请帮忙。

【问题讨论】:

标签: sql-server excel vba


【解决方案1】:

这是一个 MSSQL 示例。

Sub testMSSQL()

 'Reference  Microsoft ActiveX data object Library 2.8 ~~

   Dim cnn As ADODB.Connection
   Dim strSQL As String
   Dim Ws As Worksheet
   
   Set Ws = ActiveSheet
   strSQL = "select * from table"
   
   Set cnn = New ADODB.Connection

   'Set the provider property to the OLE DB Provider for ODBC.
   'cnn.Provider = "MSDASQL"
   'cnn.Provider = "Microsoft.ACE.OLEDB.12.0"
   'cnn.Provider = "MSOLAP"
   cnn.Provider = "SQLOLEDB.1" '<~~ mssql
   
   ' Open a connection using an ODBC DSN.
   cnn.ConnectionString = "driver={SQL Server};" & _
      "server=TestingS;uid=car;pwd=sales;database=CarSales"

    
    Set rs = New ADODB.Recordset

    rs.Open strSQL, cnn.ConnectionString, adOpenForwardOnly, adLockReadOnly, adCmdText
    
    cnn.Open
    If cnn.State = adStateOpen Then
    Else
       MsgBox "Not connected server"
       Exit Sub
    End If
    
    If Not rs.EOF Then
         With Ws
            .Range("a1").CurrentRegion.ClearContents
            For i = 0 To rs.Fields.Count - 1
               .Cells(1, i + 1).Value = rs.Fields(i).Name
            Next
            .Range("a2").CopyFromRecordset rs
            .Columns.AutoFit
        End With
    Else
        MsgBox "No Data!!", vbCritical
    End If
    rs.Close
    Set rs = Nothing
   
    cnn.Close
    Set cnn = Nothing
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多