使用VBA和SQL,我可以在查询中引用Excel列标题吗?

时间:2018-10-30 18:22:17

标签: sql sql-server excel vba excel-vba

我正在编写一个SQL查询,该查询针对数据库检查excel值。运行Excel宏时,我创建工作表2(ws2),并且需要运行查询以检查F列中的每个值是否为table.number。

我知道我可以使用Cells来获取一个值并将其包装在for循环中,但这需要太多的处理并且需要太多的SQL提取。 ws2中的列称为“ 参考”,并且所有数据都在其下方。理想情况下,我想编写如下的SQL查询:

select * from table where ws2.REFERENCE = table.number

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

我想您可以在Excel或SQL Server中进行比较。我认为一种可行的解决方案是从SQ Server导入数据,包括字段名称,并将其与Excel中已有的进行比较。

Sub Conn2SQL()

    Dim cnn1 As New ADODB.Connection
    Dim mrs As New ADODB.Recordset
    Dim iCols As Integer

    Set cnn1 = New ADODB.Connection
      cnn1.ConnectionString = "driver={SQL Server};server=MyDBServer;uid=MyuserID;pwd=mypassword;database=MyDB"
      cnn1.ConnectionTimeout = 30
      cnn1.Open

    SQry = "use MyDB select * from TableName"

    mrs.Open SQry, cnn1

    For iCols = 0 To mrs.Fields.Count - 1
        Worksheets("Sheet2").Cells(1, iCols + 1).Value = mrs.Fields(iCols).Name
    Next

    Sheet2.Range("A2").CopyFromRecordset mrs

    mrs.Close
    cnn1.Close

End Sub