Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige