Hi Peter,
in der heutigen Zeit würde Ich den Zeilenzähler stets als Long deklarieren.
Wie Du weisst kann der Integer-Datentyp keine postivie Zahl grösser 32.767 aufnehmen. Die letzte Zeile könnten aber 1.048.576 sein.
Die Folge wäre eine Fehlermeldung (#6 Überlauf) - Dein Code bricht ab.
Zu Deinem Problem:
Ich kenne Deine Datei zwar nicht, kann aber davon ausgehen, dass ein Tabstoppzeichen die Spalten trennt.
Das heisst, Du kannst Zeile für Zeile einlesen, in einer Variablen merken, und diese Zeile nun via Split(Inhalt, vbTab) in ein Array splitten.
Dieses Array beinhaltet dann pro Datenfeld die komplette Zeichenkette je Spalte (wurscht, wieviel Spalten je eingelesene Zeile)
Das Array übergibst Du dann bequem an das Worksheet(ohne Loopen zu müssen)
So arbeitest dann Zeile für Zeile ab.
Fazit:
- Lese zeilenweise ein
- Benutze Split() um die Zeile Ihren Spalten nach zu trennen und das Ergebnis in ein Array aufzunehmen
- Suche die nächste freie Zelle in Deinem Worksheet und übergib das Array (Stichwort: Range.Resize(Ubound(arrString,1),UBound(arrString,2)).value = arrString
Bei Schwierigkeiten in der Umsetzung und Anschubsbedarf dem Link folgen, Beispielmappe und Beispieltextdatei mitbringen
https://www.ms-office-forum.net/forum/index.php?referrerid=81823
gruß
Marco
|