Sql 在MS Access VBA中查询Excel工作表(使用ADODB记录集)

Sql 在MS Access VBA中查询Excel工作表(使用ADODB记录集),sql,excel,ms-access,vba,Sql,Excel,Ms Access,Vba,我想在VBA中查询Excel工作表并指定条件 简单的查询“SELECT*FROM[PCR$]”非常有效,但我不知道如何添加WHERE子句 我尝试了cmd2.CommandText=“SELECT*FROM[PCR$]WHERE([B1]不为NULL)”,但随后它抱怨缺少参数 这是完整的代码: Dim rs2 As New ADODB.Recordset Dim cnn2 As New ADODB.Connection Dim cmd2 As New ADODB.Command Dim intF

我想在VBA中查询Excel工作表并指定条件

简单的查询
“SELECT*FROM[PCR$]”
非常有效,但我不知道如何添加WHERE子句

我尝试了
cmd2.CommandText=“SELECT*FROM[PCR$]WHERE([B1]不为NULL)”
,但随后它抱怨缺少参数

这是完整的代码:


Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String

strFile = fncOpenFile
If strFile = "" Then Exit Sub

With cnn2
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source='" & strFile & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
    .Open
End With

Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [PCR$]"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic

rs2.Open cmd2

在你的连接字符串中你说

 Excel 8.0;HDR=Yes
这意味着第一行将被视为标题,不管它包含什么。如果你想使用F1,F2等,说

Excel 8.0;HDR=No

因为您有
HDR=Yes
选项,所以列名应该是第一行中的数据