我使用以下类型的代码从某些Excel工作簿(路径是参数)
检索数据Dim strSQL As String, conStr as String
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & path & "';" & _
"Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"";"
strSQL = "SELECT [Field1], [Field2] FROM [Worksheet$] WHERE [Thing1] > 1"
cnn.open conStr
rs.Open query, cnn, adOpenStatic, adLockOptimistic, adCmdText
如果字段的名称位于工作表的第一行,则代码正常工作。问题在于我需要从数据表开始在另一行(第10行)的工作表中检索数据。
有没有办法指定数据表的第一行?
请参阅此Microsoft页面。您可以使用以下内容:
strSQL = "SELECT [Field1], [Field2] FROM [Worksheet$$A10:B43] WHERE [Thing1] > 1"
在查询中使用命名或未命名范围:
strQuery = "SELECT * FROM MyRange"
strQuery = "SELECT * FROM [Sheet1$A1:B10]"
有关更多信息,请参见这些Microsoft支持文章:
如何将ADO与来自Visual Basic或VBA的Excel数据一起使用
Excelado演示了如何使用ADO在Excel Workbooks中读取和写数据
您可以从第10行开始查询一系列单元格:
"SELECT * FROM [Worksheet$A10:S100] WHERE [Thing1] > 1"
可能很难找到范围的末端。您可能会放入一个荒谬的数字,但随后您必须在末尾为无效行添加特殊处理。