ODBC 对象连接问题 - 打开限制为 65k 行

Issue with ODBC Object connection - Open limitation to 65k rows

编程新手,SQL 和 VBA。我经常处理体面大小的数据 tables,并认为添加 SQL 查询执行功能以应用于现有的 excel table 会很有帮助。研究使我找到了 ADODB 连接,并找到了一个很好的基本代码段:https://blog.learningtree.com/excel-as-a-database-how-to-query-economic-data-with-sql/

我似乎 运行 限制了在下一行代码 运行 之前可以访问多少行。在我的 SQL 语句源中,我可以 return 65k 行,在定义源 table 大小时,我得到一个 Object does not exist 错误。您可以 运行 ADODB recordset.Open 异步确保对象的完整 return 吗? - 非常感谢任何帮助。 谢谢!

试图插入 WAIT 内联: rs.Open strSQL, Application.Wait (Now + TimeValue("0:00:30")), cn 但仍然出错。请参阅下面的代码

Sub ExcelTbl_SQL()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    strFile = ThisWorkbook.FullName
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
                & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open strCon

    strSQL = "SELECT * FROM [Sheet1$A1:AI146103] WHERE GROUP = 'HIX'"

    rs.Open strSQL, cn

    Dim ws As Worksheet

    Set ws = Application.Sheets.Add    
    ws.Range("A1").CopyFromRecordset rs

    rs.Close    
    cn.Close
    'Debug.Print rs.GetString    
End Sub

这些是我得到的结果:

Run-time error '-2147217865 (80040e37)': The Microsoft Access database engine could not find the object 'Sheet1$A1:AI65437'.

我认为这是因为您正在通过这部分连接字符串调用旧版本库:

Provider=Microsoft.ACE.OLEDB.12.0

你应该试试

Provider=Microsoft.ACE.OLEDB.16.0

更新:答案在这里 Excel as database - query more than 65536 rows? 很有趣。您不能提及行,否则会出错。