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

问题描述:

我想查询Excel工作表中VBA 指定的条件。在MS-Access VBA中查询Excel工作表(使用ADODB记录集)

简单的查询"SELECT * FROM [PCR$]"完美地工作,但我不知道如何添加WHERE子句。

我试过cmd2.CommandText = "SELECT * FROM [PCR$] WHERE ([B1] IS NOT 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选项,列名应该是第一行中的数据。

http://support.microsoft.com/kb/316934