title image


Smiley Re: Sequentielles Lesen einer großen Datei


Option Explicit



Private Const PFAD_EINGABE = "d:\test\test_in.txt"

Private Const PFAD_AUSGABE = "d:\test\testout.txt"

Private Const FILTERWERT = "ZB 20040801"

Private Const FILTERSPALTE = 6

Private Const DELIMITER = vbKeyTab          ' Tabzeichen



' dauert auf einer 3.4 Ghz Maschine etwa 25sec bei etwa 1,3 Millionen Zeile,

' in Spalte 6 wird nach dem Filterwert geschaut, gefunden, wird die komplettzeile in die andre

' Datei geschrieben



Sub ein_auslesen()



    Dim fs, txtin, txtout, tmp$, i&

    On Error Resume Next

    Set fs = CreateObject("scripting.filesystemobject")

    Set txtout = fs.CreateTextFile(PFAD_AUSGABE, overwrite:=True)

    Set txtin = fs.OpenTextFile(PFAD_EINGABE, 1)

    

    With txtin

         Do While Not .AtEndOfStream

            tmp = .ReadLine: DoEvents: i = i + 1      ' doevents weil meine Testdatei 50MB groß ist und ich abbrechen möchte

            If Trim(Split(tmp, Chr(DELIMITER))(FILTERSPALTE - 1)) = FILTERWERT Then

                txtout.WriteLine tmp

                Application.StatusBar = "Match in Zeile : " & CStr(i) & " gefunden "

            End If

         Loop

        .Close

    End With

    txtout.Close

    Application.StatusBar = False

    Set fs = Nothing: Set txtin = Nothing: Set txtout = Nothing



End Sub

 Code eingefügt mit Syntaxhighlighter 1.16

Knofi So wie wir heute arbeiten, werden morgen die Beamten leben ...

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: