Zum Inhalt springen

VBA Import in EXCEL mit mehr als 1,5 Millionen Datensätze


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein Makro geschrieben, was aus ISAM Dateien über ODBC Datensätze in eine Excel Tabelle importiert. Das funktioniert auch soweit, nur kann Excel 2010 eben nur knapp über eine Millionen Datensätze, und es sind leider mehr. Etwas Quellcode:

  With Worksheets(DATEI).ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=ACU", _

        Destination:=Range("$A$1")).QueryTable

        .CommandText = Array( _

        "SELECT * FROM " + DATEI)

        .RowNumbers = False

        .FillAdjacentFormulas = False

        .PreserveFormatting = True

        .RefreshOnFileOpen = False

        .BackgroundQuery = True

        .RefreshStyle = xlInsertDeleteCells

        .SavePassword = False

        .SaveData = True

        .AdjustColumnWidth = True

        .RefreshPeriod = 0

        .PreserveColumnInfo = True

        .ListObject.DisplayName = "Tabelle_Abfrage_von_" + DATEI

        .Refresh BackgroundQuery:=False

    End With

Jetzt habe ich überlegt, ich könnte ja einfach die Anzahl pro Worksheet auf eine Millionen begrenzen, und bei Bedarf ein weiteres Worksheet anlegen. Nur komme ich ja gar nicht zwischen die Abfrage, d.h. der holt erst alle Daten, und speichert die dann in dem Worksheet ab. Hat jemand eine Idee?

Und ja, Excel ist dafür auch nicht gedacht, aber es geht leider nicht anders, weil ich über den ODBC Treiber die Daten nicht in Access importieren kann.

Geschrieben

Hi Carsten,

ich würde an deiner Stelle, die Verbindung über ein ODBC Connection Object erstellen, und die Daten dann erstmal in ein das ein Recordset Object schreiben.

Das kannst du dann Durchloopen und row für row dann entweder in die Excel Datei, oder was vermutlich sinnvoller wäre, gleich in eine sauber formatierte CSV schreiben.

Bei Bedarf kann ich dir n bissl Quellcode raussuchen / schreiben als Beispiel.

Du kannst aber eigentlich Excel dann auch gleich weglassen, und dir das ganze in C# oder VB.NET schreiben, da haste dann weniger Probleme mit.

Gruß

Sven

Geschrieben

Hi Sven,

danke erstmal für den Hinweis. Recordset Object, das klingt gut, probiere ich morgen mal aus und gebe Rückmeldung. Es soll(te) eigentlich gar nicht so groß werden, aber wie es nunmal so ist in der IT, wird das vermutlich ein Mammutprojekt. :)

Geschrieben

bah .... geh nie mit nem schotten in nem irish pub einen sauffe, und zahl den abend, während der schotte ****en is ....

Anyway ....

Ich würd dir raten, wenn du Excel VBA "musst", setz nen verweis auf die mscore.lib

Das gibt dir in Excel VBA das recht komplette .Net Framework.

Hashtables, Dictionarys was das Herz begehrt.....

bei 1.5 mio rows record sets, würd ich mich nicht freiwillig auf excel vba begrenzen wollen muss ich sagen. (Ich geb dem ne 50:50, dass Excel mit ner out of memory aussteigt.....)

Gruß

Sven

Geschrieben

Hi,

ok, also ich habs jetzt mit nem Recordset gemacht, allerdings stoße ich genau auf die Speicherproblematik. Im Grunde brauche ich Excel gar nicht, es reicht mir auch, wenn ich die Daten direkt in Access einlesen könnte. Hast du da auch einen Tipp? Also dass ich quasi per ODBC direkt in eine neue (leere) Access DB schreiben kann.

Geschrieben
Also dass ich quasi per ODBC direkt in eine neue (leere) Access DB schreiben kann.

In Access kann man Tabellen als Referenzen einbinden (bitte eine Suchmaschine dafür benutzen). Alternativ führe das SQL Select direkt über den Treiber aus und fülle die Daten in die Accesstabelle "INSERT INTO target VALUES SELECT * FROM source"

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...