Ich versuche, eine ADODB-Abfrage für einen benannten Bereich in einer Excel 2013-Arbeitsmappe durchzuführen.Probleme in Excel 2013 bei Verwendung von Bereichen, die über Zeile 65536 hinausgehen
Mein Code ist wie folgt:
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
Wenn der Bereich HighRange
erstreckt sich über Zeile 65.536 (zB A65527: B65537) Ich erhalte eine Fehlermeldung
Wenn ich genug Zeilen entfernen die fallen Bereich unter Zeile 65536 funktioniert der Code.
Der Code funktioniert auch, wenn ich erzwinge, dass die Arbeitsmappe schreibgeschützt ist (und sicherstellen, dass niemand eine nicht schreibgeschützte Version geöffnet hat).
Ist das etwas, was ich falsch mache, oder ist das ein Fehler in Excel 2013?
(Problem existiert sowohl in 32-Bit- und 64-Bit-Versionen. Existiert auch in Excel 2016.)
Ich werde vermuten, dass Sie eine Instanz mit MSoft vergessen, ein 'int' in ein' long' in ihrem MS Access db-Engine-Code zu ändern ... Klingt wie ein Fehler für mich. Versuchen Sie es in XL2016? –
Leider ist es eine Arbeitssituation, also gehen wir einfach zu Excel 2013. (Ich glaube nicht, dass wir das Problem in Excel 2010 hatten.) – YowE3K
http://forum.chandoo.org/threads/excel-recordset-only- returns-65536-rows-Wenn-du-Versuch-zu-ziehen-Daten-aus-einem-Bereich.12492/ –