Я пытаюсь выполнить запрос ADODB по именованному диапазону в книге Excel 2013.Проблемы в 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, забыл изменить 'int' на' long' в своем коде двигателя MS Access db ... Звучит как ошибка для меня. Попробуйте в XL2016? –
К сожалению, это рабочая ситуация, поэтому мы просто перейдем к Excel 2013. (Я не думаю, что у нас была проблема в Excel 2010.) – YowE3K
http://forum.chandoo.org/threads/excel-recordset-only- return-65536-rows-if-you-try-to-pull-data-from-the-range.12492/ –