Excel VBA SQL。对可以查询的行或记录集内容有限制吗?
我正在使用Windows 7 Excel 2016中的VBA使用SQL查询Excel表。包含数据的工作表有200000多行 我正在使用ActiveX数据对象6.1库。代码如下:Excel VBA SQL。对可以查询的行或记录集内容有限制吗?,excel,vba,Excel,Vba,我正在使用Windows 7 Excel 2016中的VBA使用SQL查询Excel表。包含数据的工作表有200000多行 我正在使用ActiveX数据对象6.1库。代码如下: Private Sub TestADO() Dim objConnection As ADODB.Connection Dim objRecordset As ADODB.Recordset Dim strCon As String Dim strSQL As String
Private Sub TestADO()
Dim objConnection As ADODB.Connection
Dim objRecordset As ADODB.Recordset
Dim strCon As String
Dim strSQL As String
Dim strPath As String
Dim strSource As String
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
Sheet2.UsedRange.Clear
strPath = ThisWorkbook.Path & "\"
strSource = ThisWorkbook.Name
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & strPath & strSource & "';" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
strSQL = "Select * FROM [Sheet1$] " 'I've tried many queries, all have same problem
objConnection.Open strCon
objRecordset.Open strSQL, objConnection, adOpenStatic, adLockOptimistic, adCmdText
If Not objRecordset.EOF Then
Sheet2.Range("A1").CopyFromRecordset objRecordset
End If
End Sub
除了任何SQL查询只在数据表的前36201行中搜索之外,这一切正常。可以搜索的行数、记录集内容是否有限制,或者我是否做错了什么?您的提供者应该是
Microsoft.ACE.OLEDB.12.0
,扩展属性不应该使用excel8.0
。如果是xlsb,您应该使用'Excel12.0'或Excel12宏
作为xlsm。谢谢Rory,这很有效。非常感谢您的帮助。我使用的是Provider=Microsoft.ACE.OLEDB.12.0,extendedproperties=excel12.0,并且遵守了65535行的限制。这似乎是一个愚蠢的限制-有办法解决吗?找到了。根本不需要索引,只需包含$符号:[Sheet1$]您的提供者应该是Microsoft.ACE.OLEDB.12.0
,扩展属性不应该使用excel8.0
。如果是xlsb,您应该使用'Excel12.0'或Excel12宏
作为xlsm。谢谢Rory,这很有效。非常感谢您的帮助。我使用的是Provider=Microsoft.ACE.OLEDB.12.0,extendedproperties=excel12.0,并且遵守了65535行的限制。这似乎是一个愚蠢的限制-有办法解决吗?找到了。根本不需要索引,只需包含$符号:[Sheet1$]