Sql 在Excel 2013中查询超过65536行错误

Sql 在Excel 2013中查询超过65536行错误,sql,excel,vba,Sql,Excel,Vba,我试图使用VBA查询电子表格,但似乎遇到了65536行的硬限制(尽管我运行的是Excel 2013) 当尝试选择行数大于65536的所有行时,我收到以下错误消息: 运行时错误“-2147217865(80040e37)”: Microsoft Access数据库引擎找不到对象“Sheet1$A1:A65537” 我的代码: 选项显式 子查询() 作为ADODB.连接的Dim conXLS 将rsXLS设置为ADODB.Recordset 将strPath设置为字符串 作为字符串的Dim strS

我试图使用VBA查询电子表格,但似乎遇到了65536行的硬限制(尽管我运行的是Excel 2013)

当尝试选择行数大于65536的所有行时,我收到以下错误消息:

运行时错误“-2147217865(80040e37)”:

Microsoft Access数据库引擎找不到对象“Sheet1$A1:A65537”

我的代码:

选项显式
子查询()
作为ADODB.连接的Dim conXLS
将rsXLS设置为ADODB.Recordset
将strPath设置为字符串
作为字符串的Dim strSQL
作为整数的Dim i
'获取当前工作簿的完整目录+文件名位置(以便它可以查询自身)'
strPath=Application.ActiveWorkbook.FullName
'创建到excel文件的ADO连接'
设置conXLS=New ADODB.Connection
用conXLS
.Provider=“Microsoft.ACE.OLEDB.12.0”
.ConnectionString=“数据源=”&strPath&“;”&_
“扩展属性=”“Excel 12.0;HDR=Yes;IMEX=1;只读=False”“”
以
conXLS.打开
strSQL=”“&_
“选择”和_
"* " & _
"来自"及_
“[表1$A1:A65537]”
'创建ADO记录集以保存目标工作表的内容。'
Set rsXLS=New ADODB.Recordset
使用rsXLS
.CursorLocation=adUseClient
.CursorType=adOpenForwardOnly
.LockType=adLockReadOnly
以
'使用SQL返回目标工作表的内容'
打开strSQL,conXLS
“断开活动连接”
设置rsXLS.ActiveConnection=Nothing
“将结果返回到excel”
表(“表2”)。单元格(1,1)。从记录集rsXLS复制
设置rsXLS=Nothing
'销毁连接对象'
康克斯,结束
设置conXLS=Nothing
端接头
我还尝试了连接字符串:

带有conXLS的

.Provider=“Microsoft.Jet.OLEDB.12.0”
.ConnectionString=“数据源=”&strPath&“;”&_
“扩展属性=Excel 12.0;”
打开
我已经设置了对“Microsoft ActiveX数据对象6.0库”和“OLE自动化”的引用


有趣的是,使用MSQuery似乎没有问题。

较旧的Excel版本(2007年之前)确实限制了每个工作表大约65k+行。运行代码并引用从w/Excel2007及更高版本开始的任何对象库(每个工作表最多1048576行,库版本为12.x及更高版本)。与您的情况相关,尝试使用符号
[Sheet1$a:a]
而不是
[Sheet1$A1:A65537]
Rgds,

我很久以前遇到过这个问题。我所做的是这样写我的查询:

select Data from [Temp$]
其中Temp是我的工作表名称,单元格A1的内容是“数据”,单元格A2:A80000的内容是ID


它成功了。

非常感谢,你有这样一个库的例子吗?打开Excel 2013应用程序(或从2007年开始的任何版本),点击ALT+F11,你将获得带有适当库的VBA编辑器。粘贴您的内容并重新编译项目(菜单选项Debug->Compile)。Rgds,嘿,Alex,只是有点停留在设置参考部分-没有Microsoft ActiveX Data Objects 12.0库或类似的库,我想最新的版本应该是ado.net(当然我不能使用)。微软有没有为VBA更新过ado?再次感谢您的帮助。Alex,虽然您的代码运行平稳(我的意思是[Sheet1$A:A]方法),但它仍然只返回65536行,因此整个查询的结果将是不正确的。有一个有趣的解决办法。忘记给专栏-这不起作用-不知道为什么这是一个公认的答案。只需将整个工作表作为一个整体提供给它
[Sheet1$]
-如果您的数据不在简单表格的第一行,请将其放在单独的工作表中@Đứ陈恩圭ễ下面是n的地址。Excel作为数据库停止。我喜欢危险的生活。这救了我的命,非常感谢