VBA: Textdateien lesen und schreiben

So legen Sie Informationen per VBA in Textdateien ab

Von: Lorenz Hölscher
Stand: 4. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Zeilen bearbeiten

Alle Zeilen auslesen

Mit einer Do/Until-Schleife und der EOF()-Funktion lässt sich eine Textdatei zeilenweise auslesen.

Im vorigen Beispiel haben Sie genau den Inhalt der ersten Zeile ermittelt, aber selbstverständlich können Sie auch die komplette Text-Datei auslesen. Dazu brauchen Sie eine Do/Loop-Schleife sowie die EOF()-Funktion (EOF steht für End Of File), die True wird, sobald das Dateiende erreicht ist:

Sub LiesBeispielDateiKomplett()
	Dim strZeile As String
	Dim strMerken As String
	Dim lngKanal As Long

	lngKanal = FreeFile()
	Open ThisDocument.Path & "\Beispiel.txt" For Input As #lngKanal
	Do Until EOF(lngKanal)
		Line Input #lngKanal, strZeile
		strMerken = strMerken & vbCrLf & strZeile
	Loop
	Close #lngKanal
	MsgBox "Alle Zeilen: " & strMerken
End Sub

In der Schleife lesen Sie so lange die nächste Zeile aus, bis die EOF()-Funktion den Wert True annimmt und also das Ende der Datei erreicht ist. Die Line Input-Anweisung sorgt selbst dafür, dass die jeweils nächste Zeile gelesen wird, es braucht also kein explizites "Weiterschalten".

Die gefundenen Inhalte werden nicht wirklich verarbeitet, sondern einfach in einer Zeichenkette strMerken mit Umbruch dazwischen gesammelt und am Ende wieder in der MsgBox angezeigt.

Einzelne Zeilenwerte auslesen

Mit Input statt Line Input oder einer Split()-Funktion können Sie gezielt auf einzelne Werte innerhalb der Zeile zugreifen.

Wenn wie hier (und in den meisten Fällen) die Daten eigentlich tabellarisch organisiert sind, ist es durchaus sinnvoll, die komplette Zeile in die einzelnen Werte zu zerlegen. Dafür gibt es zwei Varianten:

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein