Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

letzte zeile in textdatei ermitteln

Forumthread: letzte zeile in textdatei ermitteln

letzte zeile in textdatei ermitteln
27.04.2005 20:54:58
roland_k
hi zusammen
ich will aus ner textdatei die letzte zeilennummer ermitteln
wie muss da vorgehen ??
danke im voraus
gruss roland_k
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ohne resonanz? komisch ??
28.04.2005 03:55:05
roland_k
das thema ist wohl falsch in dem forum?
oder wie kommts ....keine antwort ?
danke roland_k
AW: ohne resonanz? komisch ??
28.04.2005 04:41:26
paula
hi roland,
Hab selbst sowas nicht gemacht, aber vieleicht hilft dir dieser Link aus der Recherche weiter
https://www.herber.de/forum/archiv/260to264/t260151.htm
gruss paula
Anzeige
AW: ohne resonanz? komisch ??
28.04.2005 06:03:23
roland_k
hi paula danke
habe das angesehn, sowas in der art muesste das sein
aber ich kann nicht erkennen ob ich das auf mein problem umsetzen kann
gruss roland_k
hi hajo - ist da was faul?
28.04.2005 07:02:22
roland_k
hi
kann das sein dass die profi hier verärgert sind,
kann mir nicht vorstellen dass mie niemand sagen kann wie ich die letzte zeilennummer einer textdatei ermittle um dann mit dieser als basis (lezte zeile -5) zb die zeile 45
von 50 z. b. auslesen kann ?
die textdateien sind gleich aufbegaut aber mit unterschiedlichen anzahl der gesamt zeilen
aber immer in der 5. zeile vor der letzten zeile stehn die werte die ich suche.
bin nun schon tage damit beschäftigt hmmm
sollte ich hier im forum was falsch gemacht haben, sollte ich das wissen, wenn sich dazu niemand äussert, kann ich ja kaum reagieren
danke fuer aufklärung
gruss roland_k
Anzeige
AW: letzte Zeile in Textdatei
28.04.2005 07:46:52
Hajo_Zi
Hallo roland,
ganz ruhig bleiben. Manchmal dauert es eine Weile bis jemand eine Lösung findet.
Es gibt wahrscheinlich keinen der sich komplett in Excel zu allen Punkten auskennt. Jeder hat so seine Spezialgebiet. Ich befasse mich nicht mit Textdateien bzw. nur am Rande, wie ich es für meine Privaten Sachen brauche. Hast Du schon mal die Recherche benutzt? Ich würde mal nach EOF suchen.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.



"Wer Rechtschreibfehler findet, darf sie behalten!" Dies gilt auch für Bert.
Anzeige
AW: letzte Zeile in Textdatei
28.04.2005 08:11:07
roland_k
hi hajo
will dir nicht zumuten die beiträge aufd meine fragen hierzu zu lesen
aber:
problematisch ist dann wenn code nicht getestet sind
so erhalte z.b eof()meine datei als antwort.......nix geht im vba editor zeile gelb ((
war das ein schreibfehler soll eof(meinedatei) heissen.
hier soll offenbar nicht ueber das dateiende hinausgelesen werden
dann mache ein beispiel .....mit viel muehe lade das ding incl.textdatei hoch ))
kommt ne loesung teilweise ok...aber nicht genau was ich will....
nachfrage:----------keine antwort mehr
tja der kleine rest ....irgendwo ..ne klammer ? ein " ein: ..oder sonst was
nehme an vom beantworter falsch verstanden ...oder nicht getestet ...hmm
wollte schon belohnung ausschreiben ...oder auftrag erteilen
schwierig .....wenns nur ein zeichen ist ? was soll berappen.
verstehe ja den frust fuer beantworter wenn:
a) grundlagenwissen oft fehlt...schwierige gratwanderung
b) vielfrager ....verpoent?
c) eben auftragsprogrmmierung angesagt wäre
thema vielfrager hab im offtropic angesehn ....ist gewissermassen schon ein problemim forum
danke dir fuer die aufmunterung :-))
keine sorge ich nehms locker...
immerhin ein vielversprechnder beitrag ist eingegangen ..den muss nu erst umsetzen ..aua
wuensche die erfolgreichen tag
gruss roland_k
Anzeige
AW: letzte Zeile in Textdatei
28.04.2005 08:15:38
WernerB.
Hallo Roland,
aus dem Vorschlag, auf den Paula hingewiesen hat, habe ich dieses Makro abgeleitet.
Ist Dir damit geholfen?
'Letzte Zeile in Textdatei ermitteln

Sub ErmittelnLetzteZeileInTextDatei()
Const csFile As String = "C:\Daten\TEMP\TextFiles\test.txt"
Dim sTxt As String, _
i As Long
On Error GoTo errHandler
Open csFile For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, sTxt
Loop
Close #1
MsgBox "Die Datei hat " & i & " Zeile(n) !"
Exit Sub
errHandler:
MsgBox "Fehler: " & Err.Number & vbCrLf & Err.Description
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: letzte Zeile in Textdatei
28.04.2005 08:23:59
roland_k
hi werner danke erst mal
muss mir das erst genau ansehn
solle das denke in ne beispielmappe integriert haben
gruss roland_k
AW: hi hajo - ist da was faul?
28.04.2005 07:47:35
Harald Kapp
Hallo Roland,
vielleicht war es auch nur ein wenig spät und so richtig xcel-spezifisch ist das Problem ja nicht.
Hier mal was zum daraud aufsetzen:

Sub letzte_Textzeile()
Dim i As Long
Dim zeile As String
Open "c:\temp\bla.txt" For Input As #1
i = 0
Do While Not EOF(1)
Line Input #1, zeile
i = i + 1
Loop
MsgBox "letzte Zeile " & i
End Sub


Gruß Harald
Anzeige
tja kann sein dass das ansatz ist
28.04.2005 08:18:27
roland_k
hi harald
danke erst mal muss mir aber erst genau ansehn ob damit zum ziel komme
wuerde gerne ne beispielmappe mit textdatei hochladen
habe schon gemacht aber das problem ist eben
dass die textdateien unterschiedlich viele zeilen haben
nur vom ende her ....von unten (letzte zeile) ist der aufbau bei allen gleich
von der letzen zeile aus immer 5 zeilen davor steht meine gesuchte zahl
danke dir fuer deine muehe
gruss roland_k

Anzeige
AW: tja kann sein dass das ansatz ist
28.04.2005 08:26:25
Harald Kapp
Hallo Roland,
Du kannst m.W. eine Textdatei nicht mal eben von hinten aufrollen. Also brauchst Du zwei Durchläufe:
1) Zählen der Anzahl Zeilen (mein Beispiel, dort in "i" gemerkt)
2) Datei schließen und noch einmal öffnen, dann die ersten i-6 Zeilen einlesen und verwerfen, dann die Zeile i-5 einlesen und bearbeiten.
Gruß Harald
Anzeige
AW: tja kann sein dass das ansatz ist
28.04.2005 08:44:16
MichaV
Moin,
so gehts auch mit 1 mal einlesen und mit jeder beliebigen Zeile von unten.


      
Dim i As Long
Dim Zeilen() As String 'speichert die x zuletzt eingelesenen Zeilen
Const x = 5 'x.-te Zeile von unten wird gesucht

ReDim
 Zeilen(1 To x)
Open "e:\privat\tmp.txt" For Input As #1
i = 0
Do While Not EOF(1)
  
For i = 2 To x
    Zeilen(i - 1) = Zeilen(i)
  
Next i
  Line 
Input #1, Zeilen(x)
Loop
Close #1
MsgBox x & "-te Zeile von unten:" & Zeilen(1) 

     Code eingefügt mit Syntaxhighlighter 3.0

Gruß- Micha
Anzeige
fuer eine zelle klappt wie fuer mehrere?
29.04.2005 13:13:28
roland_k
hi micha
habe ddas probiert --fuer eine zeile bekomme das hin:
habe das beispiel hochgeladen
https://www.herber.de/bbs/user/21873.xls

Die Datei https://www.herber.de/bbs/user/21874.txt wurde aus Datenschutzgründen gelöscht

wie der code genau funkt ist mir noch nicht klar drum kann das auch nicht erweitern ((
kannst du mir das angleichen
oder ev jemand wo sich damit auskennt ?
danke im voraus
gruss roland_k
Anzeige
AW: fuer eine zelle klappt wie fuer mehrere?
29.04.2005 19:14:36
MichaV
Hi Roland,
nach Close #1 enthält das Array Zeilen() die x letzten Zeilen der Datei. Wenn Du am Ende anstatt der MsgBox mal

For i = 1 To x
MsgBox i & "-te Zeile von unten:" & Zeilen(i)
Next i

einbaust, dann siehst Du es.
Nach Deinem Beispiel würde ich x auf 12 setzen und dann auswerten. Zeilen(9) wäre dann z.B. "josef", Zeilen(10)="er/sie hat heute 11 punkte gewonnen" usw.
Frohes Schaffen! Gruß- Micha
PS: kommen bei jedem Einlesen immer 3 Leute dazu?
Anzeige
wieder msgbox ?
29.04.2005 23:08:09
roland_k
hi micha
danke erst mal
muss probieren was du meinst
dachte sehe den code im beispiel(
namen sind oft gleiche einmal maria rubin super dann --josef maria super,-- otto maria super ---
gruss roland_k
du sagst soll msg box ersetzen mit ?
hi micha habs gefunden)) mit text
30.04.2005 09:06:27
roland_k
hi micha
danke die loesung ist toll finde ich,wenn man sie dann versteht.
erst konnte nichts damit anfangen dann hatte eine traum )))
die zählweise ist eben von der x ten zeile von unten abwärts
ich dachte die letzte zeile = 1 die vorletzte = 2 usw.
die zeile trage ich nun ein: mit .....
If i = 3 Then Cells(i + 2, 2) = Zeilen(i)===========name
If i = 4 Then Cells(i + 2, 2) = Val(Mid(Zeilen(i), 17, 5))==========punkte
nun wirds erst kompliziert:
im ordner c\archiv\Monat stehen mehrere gleich aufgebaute dateien:
"Pr-datum-uhrzeit.LST".....textdateien, ich weiss auch nicht warum endung LST..?
aber wenn ich diese in die open anweisung schreibe funktioniert das auch
ich will nun alle in dem ordner stehenden dateien einlesen
dazu muss ich dann in dem tabellenblatt wo diese eingetragen werden die letzte eingetragene zeile suchen und dann jeweils in die nächste eintragen.
dieses bekomme ich soweit hin in dem ich für spalte(2) in cells(i+ 2, 2)die letzte gefundene spalte suche und eine weiter rechts eintrage:
jetzt bräuchte ich eben den code um alle im ordner z. b. April befindlichen dateien nacheinander einzulesen und diese textdateien ev nach einlesen in nen andern ordner z. b. A_April verschiebe. so dass ich nicht die schon eingelesenen dateien nicht nochmal reinhole. ob dies ohne grossen aufwand auch ohne verschieben geht ??
ich lade die mappe mit dem bisher funktionierenden code und die zugehörigen textdateien hoch: die dateien LST habe in TXT umbenannt weil der excel server endung .LST nicht annnimmt.
https://www.herber.de/bbs/user/21913.xls

Die Datei https://www.herber.de/bbs/user/21914.txt wurde aus Datenschutzgründen gelöscht

Die Datei https://www.herber.de/bbs/user/21915.txt wurde aus Datenschutzgründen gelöscht

nun hab ich wirklich ein problem:
mute ich dem beantworter hier zu viel zu ? sprenge ich mit dieser frage den rahmen der im forum ueblichen zulässigen fragestellungen.
ich nehme natuerlich gerne loesungen kostenlos an, aber ich wäre auch bereit auf absprache einen pauschalbetrag anzubieten. dazu bräuchte ich jedoch ein angebot.
jedenfalls vielen dank für die bisherige hilfe,
grüsse von der schweizer grenze roland_k
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Letzte Zeile in einer Textdatei mit Excel ermitteln


Schritt-für-Schritt-Anleitung

Um die letzte Zeilennummer in einer Textdatei mit Excel VBA zu ermitteln, kannst du folgendes Makro verwenden. Dieses Makro zählt die Zeilen einer Textdatei und zeigt die Anzahl in einer MessageBox an.

  1. Öffne Excel und gehe zu Entwicklertools > Visual Basic.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > Einfügen > Modul.
  3. Kopiere und füge folgenden Code in das Modul ein:
Sub ErmittelnLetzteZeileInTextDatei()
    Const csFile As String = "C:\Daten\TEMP\TextFiles\test.txt"
    Dim sTxt As String, _
        i As Long
    On Error GoTo errHandler
    Open csFile For Input As #1
    Do While Not EOF(1)
        i = i + 1
        Line Input #1, sTxt
    Loop
    Close #1
    MsgBox "Die Datei hat " & i & " Zeile(n) !"
    Exit Sub
errHandler:
    MsgBox "Fehler: " & Err.Number & vbCrLf & Err.Description
End Sub
  1. Ändere den Pfad C:\Daten\TEMP\TextFiles\test.txt auf den Pfad deiner eigenen Textdatei.
  2. Führe das Makro aus, um die letzte Zeilennummer zu ermitteln.

Häufige Fehler und Lösungen

  • Fehler beim Öffnen der Datei: Stelle sicher, dass der Pfad zur Datei korrekt ist und die Datei existiert.
  • EOF-Fehler: Dies kann passieren, wenn du versuchst, über das Ende der Datei hinauszulesen. Überprüfe, ob EOF(1) korrekt verwendet wird.
  • Syntaxfehler: Achte auf korrekte Syntax im VBA-Editor, insbesondere bei Variablen und Schleifen.

Alternative Methoden

Eine weitere Möglichkeit, die letzte Zeile einer Textdatei zu ermitteln, ist die Verwendung eines Arrays, um die letzten x Zeilen zu speichern. Hier ist ein Beispiel:

Sub letzte_Textzeile()
    Dim i As Long
    Dim zeile As String
    Open "c:\temp\bla.txt" For Input As #1
    i = 0
    Do While Not EOF(1)
        Line Input #1, zeile
        i = i + 1
    Loop
    MsgBox "letzte Zeile " & i
End Sub

Diese Methode zählt ebenfalls die Zeilen, aber du kannst den Code anpassen, um nur die letzten Zeilen zu verarbeiten.


Praktische Beispiele

Wenn du die Werte aus der 5. Zeile vor der letzten Zeile einer Textdatei extrahieren möchtest, kannst du den vorherigen Code erweitern, um die gewünschten Zeilen zu speichern und anzuzeigen. Hier ist ein Beispiel:

Sub WerteVorLetzteZeile()
    Dim i As Long
    Dim zeile As String
    Dim letzteZeilen(1 To 5) As String
    Open "C:\Daten\TEMP\TextFiles\test.txt" For Input As #1
    i = 0
    Do While Not EOF(1)
        i = i + 1
        If i > 5 Then
            letzteZeilen(i Mod 5 + 1) = zeile
        End If
        Line Input #1, zeile
    Loop
    MsgBox "Wert in der 5. Zeile vor der letzten: " & letzteZeilen((i - 5) Mod 5 + 1)
    Close #1
End Sub

Dieses Skript speichert die letzten fünf Zeilen und zeigt den Wert der 5. Zeile vor der letzten an.


Tipps für Profis

  • Debugging: Nutze den Debugger im VBA-Editor, um den Code Schritt für Schritt zu testen und Fehler zu identifizieren.
  • Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um deine Makros robuster zu machen.
  • Modularer Code: Bewahre deinen Code in separaten Modulen auf, um die Übersichtlichkeit zu erhöhen und die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Textdateien in einem Ordner einlesen?
Du kannst eine Schleife verwenden, um alle Dateien in einem Ordner zu durchlaufen und den oben beschriebenen Code für jede Datei auszuführen.

2. Was ist EOF in VBA?
EOF steht für "End Of File" und ist eine Funktion, die überprüft, ob das Ende einer Datei erreicht wurde.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten aktuellen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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