window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Das FileSystemObject: Textstream

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Die VBA-eigenen Befehle wie Open, Write, Input, Close und so weiter erlauben das Erstellen, Schreiben und Lesen von Textdateien. Wenn es etwas komfortabler sein darf, gibt es jedoch noch andere Möglichkeiten. Eine davon ist die Klasse FileSystemObject, die Sie in der Bibliothek Microsoft Scripting Runtime finden. In den Artikeln Das FileSystemObject: Verzeichnisse und Das FileSystemObject: Dateien haben wir die Grundlagen zu dieser Bibliothek und zum Umgang mit Laufwerken, Verzeichnissen und Dateien erläutert. Dieser Artikel zeigt, welche Möglichkeiten diese Bibliothek im Hinblick auf den Umgang mit Textdateien bietet.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1902_FileSystemObject_Textstream.accdb.

Die TextStream-Klasse

Beim Aufruf der Methode CreateTextFile der FileSystemObject-Klasse und der Folder-Klasse werden Objekte des Typs TextStream zurückgeliefert.

Diese weisen die folgenden Eigenschaften auf:

  • AtEndOfLine: Gibt an, ob sich der Zeiger am Ende der aktuellen Zeile befindet.
  • AtEndOfStream: Gibt an, ob sich der Zeiger am Ende des Streams befindet.
  • Close: Schließt einen offenen Textstream.
  • Column: Gibt die aktuelle Spalte des Zeigers aus.
  • Line: Gibt die Nummer der aktuellen Zeile des Zeigers aus.
  • Read: Liest die mit dem Parameter angegebene Menge an Zeichen.
  • ReadAll: Liest den kompletten Inhalt des TextStream-Objekts.
  • ReadLine: Liest die jeweils folgende Zeile des TextStream-Objekts.
  • Skip: Verschiebt den Zeiger um die angegebene Anzahl Zeichen in Richtung Ende des Streams.
  • SkipLine: Verschiebt den Zeiger auf den Anfang der nächsten Zeile.
  • Write: Fügt den Inhalt des Parameters hinter dem letzten vorhandenen Zeichen in einem Textstream-Objekt ein.
  • WriteBlankLines: Fügt hinter dem letzten Zeichen des TextStream-Objekts leere Zeilen entsprechend der im Parameter angegebenen Anzahl ein.
  • WriteLine: Fügt den als Parameter angegebenen Text hinter dem letzten Zeichen des TextStream-Objekts ein und hängt ein Zeilenumbruchszeichen hinten an.

Erstellen einer Textdatei und Füllen mit Text aus einer Variablen

Wenn Sie einfach nur den Inhalt einer String-Variablen in eine neue Textdatei schreiben wollen, gehen Sie wie folgt vor:

Dim strDatei As String
Dim strPfad As String
Dim strText As String
Dim objTextstream As TextStream
strDatei = Replace(FSO.GetTempName, ".tmp", ".txt")
strPfad = FSO.BuildPath(CurrentProject.Path, strDatei)
strText = "Dies ist ein Beispieltext." & vbCrLf
strText = strText & "Und noch eine Zeile." & vbCrLf
strText = strText & "Und die letzte Zeile."
Set objTextstream = FSO.CreateTextFile(strPfad)
With objTextstream
    .Write strText
End With
objTextstream.Close

Hier ermitteln wir einen temporären Dateinamen, bei dem wir die Dateiendung .tmp durch .txt ersetzen. Dann fügen wir diese über die Funktion BuildPath mit dem Verzeichnis der aktuellen Datenbank zu einem Pfad zusammen. Außerdem fügen wir in der Variablen strText einen mehrzeiligen Text zusammen, den wir dann zur Datei hinzufügen wollen.

Die Textdatei erstellen wir mit der CreateTextFile-Methode des FileSystemObject-Objekts, der wir als Parameter den Pfad aus strPfad übergeben.

Dann nutzen wir die Write-Methode des mit der Variablen objTextstream erstellten TextStream-Objekts, um den Inhalt der Variablen strText einzufügen.

Schließlich schließen wir die Datei mit der Close-Methode. Das Ergebnis ist eine Textdatei mit dem Text aus strText (siehe Bild 1).

Eine erste Textdatei mit Inhalt

Bild 1: Eine erste Textdatei mit Inhalt

TextStream-Objekt für Folder erzeugen

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar