我有一个vba函数,该函数使用ADODB连接连接到同一工作簿。但是,它仅适用于某些工作表。如果我尝试查询确实存在的工作表,它将返回错误。但是,其他工作表工作正常。 我的代码如下:
Function runExcelQuery(wk As Workbook, strQuery As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim connectionString As String
'Setup the connection string for accessing Excel
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & wk.FullName & _
";Extended Properties=""Excel 12.0 Macro;HDR=YES"";"
cnn.Open connectionString
cnn.CommandTimeout = 0
rst.Open strQuery, cnn
Set runExcelQuery = rst
Exit Function
答案 0 :(得分:1)
好吧,经过大量的挖掘,我发现问题实际上是工作表上的行数。如果行数超过65k,则必须以不同的方式编写查询才能正常工作。
此帖子:Excel as database - query more than 65536 rows?应该提供更多详细信息。