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

Forumthread: Line input ab bestimmter Zeile

Line input ab bestimmter Zeile
08.06.2008 03:34:52
Dirk
Hallo,
ich habe eine txt Datei aus der ich Werte für eine Listbox auslesen will. Mit der Hilfe des Forums habe ich das auch hinbekommen. Da in den ersten Zeilen der txt aber nur irrelevante Information steht würde ich gerne erst ab einer bestimmten Zeile der txt beginnen. Ist das möglich?
Grüße und schönen Sonntag
Dirk

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Line input ab bestimmter Zeile
08.06.2008 08:18:00
Nepumuk
Hallo Dirk,
du musst dich an die gewünschten Zeilen "ranlesen". Ein direkter Zugriff auf eine bestimmte Zeile ist nicht möglich. Außer du schreibst die Datei nicht seriell mit Print oder Write sondern mit Put. Dann kannst du geziehlt mit Get bestimmte Sätze lesen.
Gruß
Nepumuk

Anzeige
AW: Line input ab bestimmter Zeile
08.06.2008 14:49:00
Daniel
Hi
wenn du die Textdatei mit Excel öffnest, bzw nach Excel importierst, dann wird jede Zeile in eine eignen Zelle geschrieben.
Dann kannst du gezielt auf bestimmte Werte zugreifen.
Gruß, Daniel

AW: Line input ab bestimmter Zeile
08.06.2008 14:57:53
Dirk
@ Daniel
Danke, aber ganau das wollte ich vermeiden, da die txt ca. 50.000 Zeilen und 100 Spalten groß ist (hätte ich
ja auch mal dazu schreiben können). Da ist es doch deutlich schneller bestimmte Teile mit line input und einem Array einzulesen.
Schönen Sonntag noch
Dirk

Anzeige
AW: Line input ab bestimmter Zeile
08.06.2008 15:56:13
Daniel
Hi
das mit der Datenmenge hättest du schon dazu sagen sollen.
bei List-Boxen-Auswahl kann ich mir halt nur schwer mehrere Tausend Datensätze in der Listbox vorstellen, da denke ich eher an kleiner Datenmengen.
Ob es schneller ist, die Daten über ein Array einzulesen als mit einer geöffneten Datei zu arbeiten, weiß ich nicht. Das hängt von vielen Faktoren ab. Ich habe mittlerweile die Erfahrung gemacht, daß beim geschicken Einsatz der Excelmethoden dieses durchaus dem Arbeiten mit Arrays ebenbürtig oder sogar schneller sein kann.
Gruß, Daniel

Anzeige
AW: Line input ab bestimmter Zeile
08.06.2008 16:20:05
Dirk
Der Vollständigkeit halber: Ich habe mehrere große txt Dateien (Tab getrennt), von denen ich jeweils nur einen Teil brauche. Ich habe folgndes vor: Über mehrere Userformen wird zunächst der Pfad und dann die zu importierenden Dateien ausgewählt. In der nächsten Listbox (auch in einer Userform) werden dann die ersten 100 Zeilen aufgelistet und der User kann wählen ab wo der Import beginnen soll. Dabei spielt es eigentlich keine Rolle was genau in den Zeilen steht, sondern ehr wo die Kopfzeile steht, da in den ersten paar Zeilen nur Informationen aus einem log File stehen. Als nächstes wollte ich beginnend bei der Kopfzeile ( daher Line input ab bestimmter Zeile) 10 oder 20 Zeilen in einen Array einlesen, diesen Transponieren und ebenfalls in eine Listbox stellen. Damit kann der User die zu importierenden Spalten auswählen. Im normalfall befinden die sich relativ weit vorne. Man muss also nicht ewig scrollen. Mit den gesammelten informationen sollen dann alle wichtigen Teile der txt Dateienn importiert werden. Wenn Dir dazu etwas besseres als das beschriebene einfällt wäre ich dir sehr dankbar, zumal ich bei dem zu transponierenden Array noch echte Probleme habe.
Grüße
Dirk

Anzeige
AW: Line input ab bestimmter Zeile
08.06.2008 17:10:00
Daniel
Hi
also wenn die Text-Dateien in vertretbarer Zeit komplett in Excel geladen werden können, würde ich dieses auch machen.
Wenn die Daten erstmal geladen sind, dann ist der Rest eigentlich auch kein Problem.
Wahrscheinlich findet sich auch eine geschickte Methode, die Startposition automatisch zu finden, so daß du dem Anwender eine Abfrage ersparen kannst (wahrscheinlich sind in den Zeilen mit LOG-Daten weniger Spalten belegt als in den anderen Daten, das kannst du ausnutzen, um die Startposition zu finden).
hier mal ne Beispieldatei:
die zu löschenden Daten werden nicht gelöscht, sondern nur rot gefärbt, aber das kannst du ja leicht ändern.
der zweifache Schleifendurchlauf beim Löschen der Spalten sollte das ganze beschleunigen, da es schneller ist, die Spalten auf einen Schlag zu löschen als jede einzeln.
https://www.herber.de/bbs/user/52928.xls
Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten ab bestimmter Zeile mit Excel Line Input einlesen


Schritt-für-Schritt-Anleitung

Um Daten ab einer bestimmten Zeile aus einer Textdatei mit Excel VBA einzulesen, kannst du die Line Input Anweisung verwenden. Folge diesen Schritten:

  1. Öffne die Textdatei:

    Dim DateiName As String
    Dim Zeile As String
    Dim ZeilenNummer As Long
    DateiName = "C:\Pfad\zu\deiner\datei.txt"
    Open DateiName For Input As #1
  2. Lese die unerwünschten Zeilen: Definiere, wie viele Zeilen du überspringen möchtest. Zum Beispiel, um die ersten 5 Zeilen zu überspringen:

    For ZeilenNummer = 1 To 5
       Line Input #1, Zeile ' Unerwünschte Zeilen überspringen
    Next ZeilenNummer
  3. Lese die relevanten Daten: Ab der gewünschten Zeile kannst du die relevanten Daten einlesen:

    Do While Not EOF(1)
       Line Input #1, Zeile
       ' Hier kannst du die Zeile verarbeiten
    Loop
    Close #1

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"
    Lösung: Überprüfe den angegebenen Dateipfad. Stelle sicher, dass die Datei existiert und der Pfad korrekt ist.

  • Fehler: "Ende der Datei erreicht"
    Lösung: Stelle sicher, dass du die Schleife zur Verarbeitung der Daten korrekt implementiert hast, um ein Überlaufen zu vermeiden.

  • Fehler: "Zugriff verweigert"
    Lösung: Vergewissere dich, dass die Datei nicht von einem anderen Programm geöffnet ist.


Alternative Methoden

Falls du die gesamte Datei in Excel importieren möchtest, kannst du auch den Importassistenten verwenden:

  1. Datenimport: Gehe zu „Daten“ -> „Daten abrufen“ -> „Aus Text/CSV“.
  2. Wähle die Datei aus und importiere sie.
  3. Nutze die Filterfunktionen von Excel, um die benötigten Daten zu extrahieren.

Eine weitere Methode ist die Verwendung von VBA mit Read und Get, anstatt Line Input, um spezifischere Daten einlesen zu können.


Praktische Beispiele

Hier ist ein Beispiel, wie du die ersten 10 Zeilen einer Datei mit Line Input ab der 6. Zeile einlesen kannst:

Dim i As Integer
Dim Werte(1 To 10) As String
Open DateiName For Input As #1

For i = 1 To 5
    Line Input #1, Zeile
Next i

For i = 1 To 10
    Line Input #1, Werte(i)
    ' Verarbeite Werte(i) hier
Next i

Close #1

Mit diesem Beispiel kannst du gezielt ab einer bestimmten Zeile relevante Daten in einem Array speichern und weiter verarbeiten.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines VBA-Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende Error Handling, um mögliche Laufzeitfehler elegant abzufangen.
  • Überlege, ob das Arbeiten mit Arrays in deinem Fall schneller ist als Line Input, insbesondere bei großen Datenmengen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Line Input und Input in VBA?
Line Input liest eine ganze Zeile aus einer Datei, während Input Daten in einer spezifischen Formatierung einliest.

2. Kann ich mit VBA Line Input auch Binärdateien lesen?
Nein, Line Input ist nur für Textdateien gedacht. Für Binärdateien solltest du Get verwenden.

3. Wie kann ich die Zeilen dynamisch überspringen?
Du kannst eine Schleife verwenden, um die Anzahl der zu überspringenden Zeilen flexibel zu gestalten.

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