VBA Tipp: Textdatei zeilenweise auslesen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte den Inhalt einer Textdatei zeilenweise auslesen, und alle Zeilen mit Zeilennummer im Direktfenster auflisten.

Lösung 1

Das geht mit folgendem VBA-Code.

Hinweis:
Die Markierung der Zeilenenden muss durch die Folge der Zeichen CR (13) und LF (10) gebildet werden (Microsoft Windows-Textdatei).

   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim strZeile     As String
   Dim ZNr          As Long
   Dim strDateipfad As String
   Dim fNum         As Integer
 
   strDateipfad = CurrentProject.Path & "\EineTextdatei.txt"
 
   fNum = FreeFile()
   Open strDateipfad For Input As fNum
 
   Do Until EOF(1)
 
      ZNr = ZNr + 1
      Line Input #fNum, strZeile
      Debug.Print "Zeile " & ZNr & ": " & strZeile
 
   Loop
 
   Close fNum

Lösung 2

Das geht mit folgendem VBA-Code:

Hinweis:
Die Markierung der Zeilenenden kann durch die Folge der Zeichen CR (13) und LF (10) (Microsoft Windows-Textdatei), oder nur durch das Zeichen LF (10) (Unix-, Linux-Datei) gebildet werden.

   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   'Verwendet Late Binding. Deshalb ist kein Verweis auf
   'die "Microsoft Scriping Runtime" notwendig.
 
   Const ForReading As Long = 1
 
   Dim fso          As Object    'Scripting.FileSystemObject
   Dim sf           As Object    'Scripting.File
   Dim sts          As Object    'Scripting.TextStream
   Dim strDateipfad As String
   Dim strZeile     As String
   Dim ZNr          As Long
 
   strDateipfad = CurrentProject.Path & "\EineTextdatei.txt"
 
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set sf = fso.GetFile(strDateipfad)
   Set sts = sf.OpenAsTextStream(ForReading)
 
   Do
 
      ZNr = ZNr + 1
      strZeile = sts.ReadLine
      Debug.Print "Zeile " & ZNr & ": " & strZeile
 
   Loop Until sts.AtEndOfStream

Weblinks