Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Textdateien in Arrays

Textdateien in Arrays
Jeziro
Hallo,
Leider habe ich auf der Suche im Forum nur Teilaspekte meines Problems lösen können. Ich wäre froh, wenn mir bei meinem Problem jemand helfen könnte. Ich habe zwei Textdateien, in welchen durch "|" getrennte Exceldaten stehen. Die Dateien sind wie folgt aufgebaut:
Datei 1:
Nachname|Vorname|Geburtsdatum|Geschlecht||||||||||||||||||Klasse
Abraham|Silke|11.02.1980|w||||||||||||||||||10a
Altam|Erhan|10.01.1980|m||||||||||||||||||10a
Bettenbauer|Franz|01.01.1980|m||||||||||||||||||10a
Datei2
Nachname|Vorname|Geburtsdatum|Geschlecht|ID|GUID|Klasse
Abraham|Silke|11.02.1980|w|3381|{2F40F0BA-E441-11D6-8CB8-000374890932}|10a
Altam|Erhan|10.01.1980|m|3382|{2F40F0BB-E441-11D6-8CB8-000374890932}|10a
Bettenbauer|Franz|01.01.1980|m|3383|{2F40F0BC-E441-11D6-8CB8-000374890932}|10a
Nich zwingend stehen alle Nachnamen der Datei auch in Datei 1. Ich möchte nun in ein bestehendes Tabellenblatt Spaltenweise den Nachnamen, Vornamen, Geburtsdatum, Geschlecht, Klasse und die ID einlesen. Dabei sollen die Daten nicht als neues Tabellenblatt in der bestehenden Datei auftauchen, sondern in ein bestehendes eingelesen werden. Aus Gründen der Performance würde ich dies gerne mit Hilfe von Arrays lösen, so dass die Daten erst im Speicher landen, dort verarbeitet werden und zuletzt in die Spalten geschrieben werden. Schnelligkeit spielt aufgrund der größeren Datenmenge eine große Rolle.
Ich wäre super dankbar für eine Lösung.
Gruß
Jan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textdateien in Arrays
26.09.2009 14:05:58
Christian
hallo,
hier ein Ansatz, getestet mit 2003.
die unterschiedlichen Tabellenstrukturen hab ich nicht berücksichtigt.
Ebenso müsstest du noch ne Prüfung einbauen, ob noch genügend freie Zeilen zur Verfügung stehen.
Gruß
Christian

Option Explicit
Sub ReadTxtFile()
Dim sTxt$, sSrcFile$
Dim iFile%, i&, k&, iCol%
Dim vTxt, vLine
sSrcFile = "c:\test.log"
iFile = FreeFile
Open sSrcFile For Binary Access Read As #iFile
i = LOF(iFile)
sTxt = String(i, 0)
Get #iFile, , sTxt
Close #iFile
vTxt = Split(sTxt, vbCrLf)
iCol = UBound(Split(vTxt(0), "|"))
ReDim vRes(UBound(vTxt), iCol)
For i = 0 To UBound(vTxt)
vLine = Split(vTxt(i), "|")
For k = 0 To iCol
vRes(i, k) = vLine(k)
Next
Next
With Sheets("Tabelle1")
i = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(i, 1).Resize(UBound(vTxt) + 1, iCol + 1).Value = vRes
End With
End Sub

Anzeige
AW: Textdateien in Arrays
26.09.2009 21:33:11
Jeziro
Genial! Und so elegant. Das ist genau das, was ich gesucht habe. Den Rest bastel ich mir zusammen. Ich habe die fehlende Variable ergänzt und eine If-Abfrage eingebaut, die eventuelle Leerzeilen in den Textdateien überspringt. In meinen Textateien ist die letzte Zeile immer eine Leerzeile.
Vielen Dank
Gruß
Jan
Option Explicit
Sub ReadTxtFile()
Dim sTxt$, sSrcFile$
Dim iFile%, i&, k&, iCol%, t&
Dim vTxt, vLine, vRes
sSrcFile = "c:\SchuelerBasisdaten.dat"
iFile = FreeFile
Open sSrcFile For Binary Access Read As #iFile
i = LOF(iFile)
sTxt = String(i, 0)
Get #iFile, , sTxt
Close #iFile
vTxt = Split(sTxt, vbCrLf)
iCol = UBound(Split(vTxt(0), "|"))
ReDim vRes(UBound(vTxt), iCol)
For i = 0 To UBound(vTxt)
If vTxt(i)  "" Then
vLine = Split(vTxt(i), "|")
For k = 0 To iCol
vRes(i - t, k) = vLine(k)
Next
Else
t = t + 1
End If
Next
With Sheets("Tabelle1")
i = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(i, 1).Resize(UBound(vTxt) + 1 - t, iCol + 1).Value = vRes
End With
End Sub

Anzeige
AW: Textdateien in Arrays
27.09.2009 06:37:55
Christian
Hallo Jan,
ein Fehler steckt in meinem Code noch drin. .Cells(i, 1).Resize(.. müsste .Cells(i + 1, 1).Resize(.. heißen, sonst wird die letzte vorhandene Zeile überschrieben.
Gruß
Christian
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige