I am trying to perform an ADODB query on a named range in an Excel 2013 workbook.
My code is as follows:
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
If the range HighRange
extends beyond row 65536 (e.g. A65527:B65537) I get an error message
If I remove enough rows to drop the range below row 65536, the code works.
The code also works if I force the workbook to be read-only (and ensure that no-one else has a non-read-only version open).
Is this something I am doing wrong, or is this a bug in Excel 2013?
(Problem exists in both 32-bit and 64-bit versions. Also exists in Excel 2016.)