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

时间:2012-10-19 17:43:02

标签: excel vba adodb

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

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

3 个答案:

答案 0 :(得分:4)

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

strQuery = "SELECT * FROM MyRange"

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

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

How To Use ADO with Excel Data from Visual Basic or VBA

ExcelADO demonstrates how to use ADO to read and write data in Excel workbooks

答案 1 :(得分:3)

Microsoft page。你可以使用类似的东西:

strSQL = "SELECT [Field1], [Field2] FROM [Worksheet$$A10:B43] WHERE [Thing1] > 1"

答案 2 :(得分:2)

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

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

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