ich stehe gerade vor einem Rätsel. In Excel 2010 habe ich eine Liste, die definitv mehr als 65.536 Einträge hat. Diese versuche ich per VBA über ein SQL-Statement zu aggregieren. Das Resultat hat dann maximal 1.000 Einträge.
Das Mysterium: Die u.a. Funktion unterdrückt IMMER sämtliche Zeilen, die nach der berühmten 65.536 sind. Die Datei ist natürlich eine xlsm. Alternativen, die ebenfalls nicht funktionieren: eine xlsx, eine "ganz frische" Datei (falls noch irgendwelche "2003-Reste" versteckt wären), Zugriff nicht in einer Datei sondern zwischen zweien, ... Wie man es dreht und wendet, die 65.536 fällt nicht.
Vielleicht habt Ihr ja ne kluge Idee, ich habe nur noch graue Haare :-)
Die Quelltabelle ist wie folgt aufgebaut:
key num
------------------
AA.BAA.001.1 5555
AA.AAA.000.0 5
AA.BAA.001.1 100
XX.ZYX.222.2 9
RR.QQR.124.4 700
....
Der Funktion selbst:
Function SQLAA()
Dim SQLAA_CONNE As New ADODB.Connection
Dim SQLAA_RCSET As New ADODB.Recordset
Dim SQLAA_STMNT As String
SQLAA_STMNT = "SELECT tAA.key,SUM(tAA.num) FROM ([TABELLE_AA] AS tAA) WHERE (tAA.key'') GROUP BY tAA.key ORDER BY tAA.key"
Set SQLAA_CONNE = CreateObject("ADODB.Connection")
Set SQLAA_RCSET = CreateObject("ADODB.RecordSet")
SQLAA_CONNE.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=Yes;FMT=Delimited"";"
SQLAA_RCSET.Open SQLAA_STMNT & ";", SQLAA_CONNE, 1, 3
Call SQLEX(SQLAA_RCSET) 'Output-Funktion in ein Tabellenblatt, nicht weiter wichtig
SQLAA_RCSET.Close
SQLAA_CONNE.Close
Set SQLAA_RCSET = Nothing
Set SQLAA_CONNE = Nothing
End Function