我試圖在Excel 2013工作簿中的命名範圍上執行ADODB查詢。Excel 2013中使用範圍超出行65536時出現的問題
我的代碼如下:
Option Explicit
Sub SQL_Extract()
Dim objConnection As ADODB.Connection
Dim objRecordset As ADODB.Recordset
Set objConnection = CreateObject("ADODB.Connection") ' dataset query object
Set objRecordset = CreateObject("ADODB.Recordset") ' new dataset created by the query
objConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
objConnection.Open
objRecordset.Open "SELECT * FROM [HighRange]", objConnection, adOpenStatic, adLockOptimistic, adCmdText
If Not objRecordset.EOF Then
ActiveSheet.Cells(1, 1).CopyFromRecordset objRecordset
End If
objRecordset.Close
objConnection.Close
End Sub
如果範圍HighRange
超出65536行(例如A65527:B65537)我得到一個錯誤信息
如果我刪除了足夠的行掉落範圍在65536行之下,代碼有效。
如果我強制工作簿爲只讀(並確保沒有人打開非只讀版本),該代碼也可以使用。
這是我做錯了什麼,或者這是Excel 2013中的錯誤?
(問題存在於32位和64位版本。也存在在Excel 2016年)
我猜測你發現MSoft的一個實例忘記在他們的MS Access數據庫引擎代碼中將'int'換成'long' ...聽起來像是一個bug。試試XL2016? –
不幸的是,這是一個工作情況,所以我們只是去Excel 2013.(我不認爲我們在Excel 2010中有問題。) – YowE3K
http://forum.chandoo.org/threads/excel-recordset-only-返回-65536-rows-if-you-try-to-pull-data-from-a-range.12492/ –