4

我使用以下类型的代码从一些 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 行)开始的工作表中检索数据。

有没有办法指定我的数据表的第一行?

4

3 回答 3

5

请参阅此Microsoft 页面。你可以使用类似的东西:

strSQL = "SELECT [Field1], [Field2] FROM [Worksheet$$A10:B43] WHERE [Thing1] > 1"
于 2012-10-19T17:56:09.907 回答
4

在查询中使用命名或未命名范围:

strQuery = "SELECT * FROM MyRange"

strQuery = "SELECT * FROM [Sheet1$A1:B10]"

有关详细信息,请参阅这些 Microsoft 支持文章:

如何将 ADO 与 Visual Basic 或 VBA 中的 Excel 数据一起使用

ExcelADO 演示如何使用 ADO 在 Excel 工作簿中读取和写入数据

于 2012-10-19T17:59:41.367 回答
2

您可以从第 10 行开始查询一系列单元格:

 "SELECT * FROM [Worksheet$A10:S100] WHERE [Thing1] > 1"

很难找到范围的终点应该是什么。您可以输入一个大得离谱的数字,但是您必须在最后为 NULL 行添加特殊处理。

于 2012-10-19T17:57:12.600 回答