|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 skywen_2004 于 2018-8-7 16:27 编辑
EXCEl 使用SQL 语句查询数据时发现,当引用源数据量超过 70000条时 就提示找不到数据源。
如 这样就可以执行
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
'--------------------------------------- 设置SQL语句 ------------------- ------------------- -------------------
SQL = "select TOP 100 * from [库存$A1:K60000] "
如果改成 80000就提示错误
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
'--------------------------------------- 设置SQL语句 ------------------- ------------------- -------------------
SQL = "select TOP 100 * from [库存$A1:K80000] "
请问题该种限制是Excel的限制还是 我预计的问题?
详细语句如下:
Sub SQL_Excel_2003_2007()
'On Error Resume Next '如果出现错误,忽略,然后执行下一行代码。
Application.ScreenUpdating = False '关闭屏幕刷新,成对出现,提高速度
Application.DisplayAlerts = False '关闭提示,,成对出现,避免出现提示框
'--------------------------------------- 参数声明部分 ------------------- ------------------- -------------------
Dim cnn, SQL$ '定义数据库连接和SQL语句
Set cnn = CreateObject("adodb.connection") '创建数据库连接
Set rs = CreateObject("adodb.recordset") '创建一个数据集保存数据
'--------------------------------------- 设置数据库连接 ------------------- ------------------- -------------------
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
'--------------------------------------- 设置SQL语句 ------------------- ------------------- -------------------
SQL = "select TOP 100 * from [库存$A1:K80000] "
'Sheets("结果").Cells.ClearContents '清理保存数据的区域
Sheets("选片结果").Range("a2").CopyFromRecordset rs '将数据集粘贴到Excel中,左上角为A2,无列名。
'Sheets("结果").Range("b2").CopyFromRecordset cnn.Execute(SQL) '可以不声明Y,直接使用
cnn.Close '关闭数据库连接
Set cnn = Nothing '将CNN从内存中删除。
'--------------------------------------- ------------------------ ------------------- -------------------
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub '这就是最简单的EXCEL中SQL的应用 ,其他的都是SQL的运用了
|
|