Я пытаюсь выполнить запрос ADODB для именованного диапазона в книге Excel 2013.
Мой код выглядит следующим образом:
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.)
int
наlong
в своем коде движка MS Access db... Звучит как ошибка для меня. Попробовать в XL2016? - person David Colwell   schedule 29.07.2016int
противlong
, поскольку 65 535 является самым большим 16-битным целым числом без знака. - person Alexis Olson   schedule 29.07.2016