Beschäftigungstherapie -.-
16.03.2018 07:50:39
Burak
also ich habe für die letzten zwei Wochen des Praktikums noch eine Aufgabe bekommen, da wir das Hauptprojekt frühzeitig abgeschlossen haben.
Funktionstechnisch habe ich alles hinbekommen (scheinbar habe ich dank euch echt ne Menge über vba gelernt! :*), aber bei der immensen Masse an Daten, sogar auf schnelleren Rechnern schwer ertragbar.
Es geht um den Import von Daten aus ner .data file. Und danach noch per Sverweis Informationen hinzufügen und eine Spalte umformatieren.
Das Problem ist, dass in der data-file dermaßen viele Daten sind, dass
1. diese Datei schon 1,41 GB groß ist
2. es die maximale Anzahl an Zeilen in Excel überschreitet (1.048.271 oder so)
3. der Import an sich vllt noch vertretbar wäre aber mit dem Sverweis und der Umformatierung es viel zu lange dauert.
Der Code:
Sub dataimport()
'Deklaration der Variablen
Dim ws As Worksheet, importdatei, Loletzte As Long, i As Long, k As Long
'Pfadermittlung für den Import
importdatei = Application.GetOpenFilename
'Abbruchfunktion
If importdatei = "Falsch" Then Exit Sub
'Makrobremsen lösen
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = False
End With
Set ws = ActiveWorkbook.Sheets("Rohdaten")
With ws
If .AutoFilterMode Then .Rows("1:1").AutoFilter
.Cells.Clear
End With
'Dateipfad und Ziel für Import
With ws.QueryTables.Add(Connection:="TEXT;" & importdatei, Destination:=ws.Range("A2"))
'Import als Textformatierung
.TextFileParseType = xlDelimited
'Spaltentrennung in Quelldatei per Komma
.TextFileSemicolonDelimiter = True
'Aktualisieren der externen Datenverbindung
.Refresh
End With
With ws
.Range("A1").Resize(, 14) = Array("Maschine", "Prüfplan", "Zeitstempel", "Barcode", "Bauteil", _
"LIBName", "Analysetyp", "w", "Fenster", "PIN", "Feat", "Wert", "Win", "Beschreibung")
Loletzte = .Cells(Rows.Count, 1).End(xlUp).Row
If Loletzte
Beispieldatei:https://www.herber.de/bbs/user/120452.xlsm
Die zu importierende Datei ist nicht mitanbei, da das Öffnen der Datei, den PC überlastet :D
Die Tatsache, dass es die maximale Anzahl an Zeilen überschreitet und daher nicht alles importiert ist zwar suboptimal, aber da muss bei der Lösungsfindung nicht die Priorität liegen. Hauptsache es geht schneller :D
Ich würde mich auch über kleine Erklärungen freuen, wieso bzw was an eurer Lösung performanter ist, damit ich nicht bei jeder Optimierung euch einbinden muss.
Freundliche Grüße und vielen lieben Dank