PDA

Vollständige Version anzeigen : Textdatei mit VBA einlesen


DarthPatrick
02.06.2003, 12:50
Mahlzeit!

Ich knabber gerade an folgendem Problem: eine Textdatei mit Trennzeichen soll nach A97 importiert werden. Allerdings müssen die ersten beiden und die letzte Zeile entfernt werden.

Ich habe mir eine kleine Function geschrieben, um die Textdatei zu öffnen und nach Trennzeichen in ein Recordset zu schreiben.

Jetzt suche ich noch eine elegante Möglichkeit die ersten beiden und die letzte Zeile auszulassen - und daran scheiter ich im Moment. Es muss auch nicht unbedingt eine elegante Lösung sein, hauptsache es klappt!

Das einlesen geschieht mit einer Do...Loop-Schleife.

Arne Dieckmann
02.06.2003, 12:59
Vor der Schleife setze ein Variable i auf 0

i=0
Open "DATEI1" For Input As #1 ' Datei zum Einlesen öffnen.
Do While Not EOF(1) ' Auf Dateiende abfragen.
Line Input #1, Dateidaten ' Datenzeilen lesen.
if i>1 then
'hier in die Tabelle schreiben
end if
i=i+1
Loop
Close #1 ' Datei schließen.


Wie man die letzte Zeile auslassen kann, weiss ich jetzt auch nicht auf Anhieb.

DarthPatrick
02.06.2003, 13:05
Hallo Arne,

vielen Dank für die Idee mit dem Zähler.

Ich hatt auch schon überlegt, ob ich die Textdatei vor dem eigentlichen "Do-It-Yourself-Import" einmal durchzähle - fand ich aber nicht so glücklich wegen der Laufzeit ... wird allerdings klappen.

Ich hatte insgeheim auf eine einfachere Lösung gehofft - aber mal schauen, vielleicht hat ja noch einer ne gute Idee ...

WAG
02.06.2003, 13:24
Hi Patrick,
Arne war schon auf dem richtigen Weg
<pre>
i = 0
Open "DATEI1" For Input As #1 ' Datei zum Einlesen öffnen.
Do While Not EOF(1) ' Auf Dateiende abfragen.
If i > 1 Then
'hier in die Tabelle schreiben
End If
Line Input #1, Dateidaten ' Datenzeilen lesen.
i = i + 1
Loop
Close #1 ' Datei schließen.
</pre>
Dieter

DarthPatrick
02.06.2003, 13:31
Hallo Dieter,

auch dir erstmal herzlichen Dank für den Vorschlag. Allerdings ist das größere Problem, die letzte Zeile nicht mit zu lesen ...

Arne Dieckmann
02.06.2003, 13:35
Hm. Wenn ich eine Textdatei mit folgendem Inhalt anlege:

1;A
2;A
3;B
4;B
5;C

und die Routine etwas ändere:

i = 0
Open "c:\N.txt" For Input As #1 ' Datei zum Einlesen öffnen.

Do While Not EOF(1) ' Auf Dateiende abfragen.
If i > 2 Then
'hier in die Tabelle schreiben
Debug.Print dateidaten
End If
Line Input #1, dateidaten ' Datenzeilen lesen.
i = i + 1
Loop

Close #1 ' Datei schließen

Dann zeigt mir das Direktfenster nur
3;B
4;B

an. Die ersten beiden Zeilen also nicht und die letzte Zeile ebenfalls nicht.

WAG
02.06.2003, 13:37
Kleiner Lapsus. So läßt er nur die 1. und die letzte Zeile weg. Es muß heißen
If i > 2 Then

Dieter

DarthPatrick
02.06.2003, 13:45
Alles klar Jungs,

Lösung verstanden und Problem gelöst - Vielen Dank euch beiden!