如果工作表的第一行没有列名,则如何使用ADODB连接从Excel检索数据



我使用以下类型的代码从某些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"

可能很难找到范围的末端。您可能会放入一个荒谬的数字,但随后您必须在末尾为无效行添加特殊处理。

最新更新