我使用以下类型的代码从某些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行)。
有没有办法指定数据表的第一行?
答案 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行添加特殊处理。