Zeichenreihenfolge in einer Textdatei suchen

gabrielgsell

Mitglied
Hallo zusammen,
Ich sollte in einer Textdatei einen bestimmten Text suchen. Nun hab ich es mit folgendem Code versucht,

Code:
Private Sub CmdStart_Click()
Dim Pfad    As String       'Pfad "C:\WinNT\System32\Spool\Printers"
Dim DInhalt As String       'Dateiinhalt
Dim DEnde   As String       'Dateiende
Dim File    As String
Dim KNr     As Integer      'KanalNr.
Dim Zeile   As String
Dim Inhalt  As Variant
Dim Wert    As String       'Wert nach dem gesucht werden soll
Dim FSO     As New FileSystemObject
Dim i       As Integer

Wert = "ABLKBP51"
Pfad = "C:\WinNT\System32\Spool\Printers\"
DEnde = "*.SPL"
File = Dir(Pfad & DEnde)
i = 0
Do While File <> ""
    KNr = FreeFile()        'die nächste freie Kanalnr.
    Open Pfad & File For Input As KNr
    Do While Not EOF(KNr)  'Solange das Dateiende erreicht ist
     Line Input #KNr, Zeile
     Inhalt = Split(Zeile, " ")
     If Inhalt(i) = Wert Then FSO.CopyFile Pfad & File, Pfad & "\verschieben\" & File 'Datei in den Unterodner verschieben
     i = i + 1
    Exit Do
    Loop
    Close KNr
    'FSO.DeleteFile Pfad & File
    File = Dir
Loop
Close KNr
End Sub
Das Programm verrichtet seine Arbeit, aber nur wenn der erste Wert = "ABLKBP51" ist. Ansonsten prüft es den nächsten Wert nicht, obwohl ich im sage, dass er den Text prüfen söll bis EndOfFile ist.
Ich denke es ist irgendwo ein Logikfehler, aber ich kann ihn nicht ausmachen.

Vielen Dank und Grüsse
 
Zuletzt bearbeitet:
Machs so:
Code:
Private Sub CmdStart_Click()
Dim Pfad    As String       'Pfad "C:\WinNT\System32\Spool\Printers"
Dim DInhalt As String       'Dateiinhalt
Dim DEnde   As String       'Dateiende
Dim File    As String
Dim KNr     As Integer      'KanalNr.
Dim Inhalt  As String
Dim Wert    As String       'Wert nach dem gesucht werden soll
Dim FSO     As New FileSystemObject

Wert = "ABLKBP51"
Pfad = "C:\WinNT\System32\Spool\Printers\"
DEnde = "*.SPL"
File = Dir(Pfad & DEnde)
Do While File <> ""
    KNr = FreeFile()        'die nächste freie Kanalnr.
    Inhalt = Space(FileLen(File))
    Open Pfad & File For Binary As KNr
     Get KNr, , Inhalt
     If InStr(Inhalt, Wert) > 0 Then FSO.CopyFile Pfad & File, Pfad & "\verschieben\" & File 'Datei in den Unterodner verschieben
    Close KNr
    'FSO.DeleteFile Pfad & File
    File = Dir
Loop
Close KNr
End Sub
Damit lese ich den kompletten Inhalt der Datei in eine Variable ein und durchsuche die Variable mit der InStr()-Funktion nach dem gewünschten Wert.


Der Doc!
 
Zuletzt bearbeitet:
Hallo,
Super funktioniert alles! Musste nur noch diese Zeile:

Code:
Inhalt = Space(FileLen(File))
in diese umwandeln:
Code:
Inhalt = Space(FileLen(Pfad & File)
Vielen Dank für die schnelle Antwort. Grüsse
 
Zurück