VBA – Textdatei zeilenweise lesen
In diesem Tutorial zeigen wir Ihnen, wie Sie den Inhalt von Textdateien mit VBA zeilenweise einlesen können.
Wir können die Textdatei entweder als ganze Datei oder Zeile für Zeile einlesen.
Textdatei zeilenweise lesen
Der Text in einer Textdatei besteht in der Regel aus mehreren Zeilen, die durch Trennzeichen voneinander getrennt sind. Dies kann ein Komma („,“), ein Komma mit Leerzeichen („, „), ein Semikolon („;“), ein Semikolon mit Leerzeichen („; „), ein Leerzeichen (“ „), ein Tabulator (vbTab) oder in seltenen Fällen ein anderes Zeichen wie eine Tilde (~) sein. Die Zeilen werden normalerweise durch einen Zeilenumbruch (vbCRLF) getrennt.
Der einfachste Weg, eine Textdatei in VBA zeilenweise in unser Arbeitsblatt einzulesen, besteht darin, die erste Zelle auszuwählen, in die der Text eingefügt werden soll und dann den folgenden Code auszuführen:
Sub DateiLesen()
Dim strDatei As String, strZeile As String
strDatei = "C:\Test\TestDatei.txt"
Open strDatei For Input As #1
Do Until EOF(1)
Line Input #1, strZeile
ActiveCell = strZeile
ActiveCell.Offset(1, 0).Select
Loop
Close #1
End Sub
Dadurch wird jede Zeile der Textdatei in eine einzelne Zelle in Excel eingefügt.
Wir können auch eine Textdatei in VBA lesen, indem wir das FileSystemObject verwenden. Im folgenden Code haben wir eine späte Bindung mit dem FileSystemObject verwendet. Sie können auch einen Verweis auf dieses Objekt in Ihrem VBA-Projekt erstellen. Weitere Informationen finden Sie hier.
Sub TextDateiLesen()
Dim strZeile As String
Dim FSO as Object
Dim TSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TSO = FSO.OpenTextFile("C:\Test\TestDatei.txt")
Do While Not TSO.AtEndOfStream
strZeile = TSO.ReadLine
ActiveCell = strZeile
ActiveCell.Offset(1, 0).Select
Loop
TSO.Close
Set TSO = Nothing
Set FSO = Nothing
End Sub
Wir können eine etwas kompliziertere Schleife erstellen, wenn wir die Zeilen durch ihre Trennzeichen in Zellen trennen wollen. Hier haben wir die frühe Bindung im Code verwendet und das FileSystemObject deklariert.
Sub TextdateiMitTrennzeichenLesen()
Dim StrZeile As String
Dim FSO As New FileSystemObject
Dim TSO As Object
Dim StrZeilenElemente As Variant
Dim Index As Long
Dim i As Long
Dim Trennzeichen As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TSO = FSO.OpenTextFile("C:\Test\TestDatei.txt")
Trennzeichen = ","
Index = 1
Do While TSO.AtEndOfStream = False
StrZeile = TSO.ReadLine
StrZeilenElemente = Split(StrZeile, Trennzeichen)
For i = LBound(StrZeilenElemente) To UBound(StrZeilenElemente)
Cells(Index, i + 1).Value = StrZeilenElemente(i)
Next i
Index = Index + 1
Loop
TSO.Close
Set TSO = Nothing
Set FSO = Nothing
End Sub
Dies führt dazu, dass die Zeilen in Excel in einzelne Zellen wie in der folgenden Grafik dargestellt aufgeteilt werden.