Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA SQL。对可以查询的行或记录集内容有限制吗?_Excel_Vba - Fatal编程技术网

Excel VBA SQL。对可以查询的行或记录集内容有限制吗?

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

我正在使用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
    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$]