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

ReadLine und AtEndOfStream

Forumthread: ReadLine und AtEndOfStream

ReadLine und AtEndOfStream
m3tm4n
Hallo zusammen,
Mein Problem ist, ich was programmiert in dem ich TXT Dateien einlese.
Diese Dateien sind so aufgebaut
:xyz
:xyz
:xyz
Und nutze die Funktion AtEndofStream um bis zum Ende der TXT zu lesen. Programm funktioniert tadellos.
Nun bekomme ich TXT Dateien die so aufgebaut sind
:xyz
:xyz
:xyz
irgendwas
irgendwas
irgendwas
Mich interessiert jetzt nur die Information mit ":" (Doppelpunkt) am Anfang.
Meine Idee war, das AtEndofStream zu verschieben auf den Letzten Wert mit ":".
Irgendwie funktioniert meine Idee nicht.
Jemand eine Idee?
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ReadLine und AtEndOfStream
27.03.2012 15:21:29
Rudi
Hallo,
der Code wäre interessant.
Verlasse einfach die Schleife, wenn : nicht vorkommt.
Dim fs, a, retstring
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("c:\testfile.txt", ForReading, False)
Do While a.AtEndOfStream  True
retstring = a.ReadLine
if Left(retstring)":" Then
Exit Do
else
'Code
End If
Loop
a.Close
Gruß
Rudi
Anzeige
;
Anzeige

Infobox / Tutorial

Mit VBA TXT-Dateien einlesen: ReadLine und AtEndOfStream nutzen


Schritt-für-Schritt-Anleitung

Um mit VBA TXT-Dateien zu arbeiten und die Funktion ReadLine in Kombination mit AtEndOfStream zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Füge ein Modul hinzu: Rechtsklicke im Projektfenster auf Einfügen und wähle Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Dim fs As Object, a As Object, retstring As String
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.OpenTextFile("c:\deinpfad\deinedatei.txt", 1, False)
    
    Do While Not a.AtEndOfStream
       retstring = a.ReadLine
       If Left(retstring, 1) = ":" Then
           ' Hier kannst du mit dem Wert arbeiten
           Debug.Print retstring
       End If
    Loop
    
    a.Close
  4. Pfad anpassen: Ersetze "c:\deinpfad\deinedatei.txt" mit dem Pfad zu deiner TXT-Datei.

  5. Code ausführen: Schließe den VBA-Editor und führe das Makro aus.


Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden
    Lösung: Überprüfe den Pfad zur Datei. Stelle sicher, dass alle Verzeichnisse korrekt sind.

  • Fehler: AtEndOfStream gibt Fehler zurück
    Lösung: Stelle sicher, dass die Datei nicht leer ist. Du kannst eine Überprüfung einfügen, bevor du die Schleife startest.

  • Fehler: ReadLine gibt unerwartete Werte zurück
    Lösung: Achte darauf, dass der Code zur Überprüfung von : korrekt ist. Die Funktion Left(retstring, 1) sollte den ersten Charakter überprüfen.


Alternative Methoden

Eine alternative Methode zum Einlesen von TXT-Dateien ist die Verwendung von Open und Input #. Hier ein Beispiel:

Dim line As String
Open "c:\deinpfad\deinedatei.txt" For Input As #1
Do Until EOF(1)
    Line Input #1, line
    If Left(line, 1) = ":" Then
        Debug.Print line
    End If
Loop
Close #1

Diese Methode kann in bestimmten Situationen nützlich sein, wenn Du mehr Kontrolle über den Lesevorgang benötigst.


Praktische Beispiele

Angenommen, du hast eine TXT-Datei mit dem folgenden Inhalt:

:Erstes Beispiel
:Zweites Beispiel
Irrelevante Zeile

Wenn du den oben gezeigten Code verwendest, wird nur die Zeile mit dem Doppelpunkt ausgegeben:

:Erstes Beispiel
:Zweites Beispiel

Das ist besonders nützlich, wenn du nur bestimmte Informationen aus einer größeren Datei extrahieren möchtest.


Tipps für Profis

  • Nutze die FileSystemObject-Methoden effizient, um nicht nur TXT-Dateien, sondern auch andere Dateitypen zu verwalten.
  • Implementiere Fehlerbehandlungen, um sicherzustellen, dass dein Code robust ist, insbesondere beim Arbeiten mit externen Dateien.
  • Experimentiere mit der Kombination von ReadLine und AtEndOfStream, um komplexere Datenanalysen durchzuführen.

FAQ: Häufige Fragen

1. Was ist AtEndOfStream und wie wird es verwendet?
AtEndOfStream ist eine Eigenschaft des TextStream-Objekts, die überprüft, ob das Ende der Datei erreicht wurde. Es wird in Schleifen verwendet, um den Lesevorgang zu steuern.

2. Wie kann ich ReadLine anpassen, um nur bestimmte Zeilen zu lesen?
Du kannst Bedingungen innerhalb der Schleife setzen, um nur die Zeilen zu verarbeiten, die deinen Kriterien entsprechen, z. B. mit einem bestimmten Zeichen zu beginnen.

3. Welche Excel-Version ist für diesen Code erforderlich?
Der gezeigte VBA-Code funktioniert in Excel-Versionen, die VBA unterstützen, wie Excel 2007 und später.

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