为VBA SQL查询提取多个excel值并在中使用

为VBA SQL查询提取多个excel值并在中使用,excel,vba,Excel,Vba,我有一个下面的VBA代码,我想从excel列(A1:A4)中读取四个值a、b、c、d,这样当我连接到数据库时,它们可以成为SQL查询IN语句的一部分。 我构建了swhere子句来创建('a','b','c','d')字符串,但是最后的SQL查询SQLStr似乎有一些错误,我的代码失败了 有人能帮忙吗 事先非常感谢你 Sub ADOExcelSQLServer() Dim Cn As ADODB.Connection 'connection variable Dim Server

我有一个下面的VBA代码,我想从excel列(A1:A4)中读取四个值a、b、c、d,这样当我连接到数据库时,它们可以成为SQL查询IN语句的一部分。 我构建了swhere子句来创建('a','b','c','d')字符串,但是最后的SQL查询SQLStr似乎有一些错误,我的代码失败了

有人能帮忙吗

事先非常感谢你

Sub ADOExcelSQLServer()

    Dim Cn As ADODB.Connection 'connection variable
    Dim Server_Name As String ' text type
    Dim Database_Name As String
    Dim User_ID As String
    Dim Password As String
    Dim SQLStr As String
    Dim rs As ADODB.Recordset ' Database connection variable
    Dim rRange As Range
    Dim rCell As Range
    Dim sWHEREclause As String
    Set rs = New ADODB.Recordset
    
     
    Server_Name = "server name" 
    Database_Name = "Database name" 
    
    
    Set rRange = Sheet1.Range("A1:A4")

    For Each rCell In rRange
        sWHEREclause = sWHEREclause & "'" & rCell & "',"
    Next rCell
    
    
    'SQLStr = "Select * from MASTER_QUERY mq where mq.ModelNum in ('a','b','c','d')" 'commented line
    SQLStr = "Select * from MASTER_QUERY mq where mq.ModelNum  IN (" & sWHEREclause & ")"
      

    Set Cn = New ADODB.Connection 'set connection with databse
    Cn.Open "Provider=SQLOLEDB;Data Source=" & Server_Name & "; Initial Catalog=" & Database_Name & "; Integrated Security=SSPI;" 'connection parameter to the database

    rs.Open SQLStr, Cn, adOpenStatic
     ' Dump to spreadsheet
     
     
    With Worksheets("sheet1").Range("b2:z500") ' Enter your sheet name and range here
   ' Range(A1).Value = "ID)"

        .ClearContents ' clear content first in excel
        .CopyFromRecordset rs
    End With
     '            Tidy up
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
    
End Sub

字符串以

执行以下循环:

Dim delim as string
delim = ""
For Each rCell In rRange
    sWHEREclause = sWHEREclause & delim & "'" & rCell & "'"
    delim = ", "
Next rCell