VBA – In Textdatei schreiben

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 19, 2022

In diesem Tutorial zeigen wir Ihnen, wie Sie mit VBA in Textdateien schreiben können.

In eine Textdatei schreiben

Die folgenden Codes verwenden das FileSystemObject (weitere Informationen). Um es verwenden zu können, müssen Sie einen Verweis auf die VB-Skript-Laufzeitbibliothek setzen.

Schreiben in eine neue Textdatei

Mit der Methode CreateTextFile von FileSystemObject können Sie eine Textdatei erstellen und dann den Inhalt hinzufügen:

Sub FSOTextDateiErstellenUndBeschreiben() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set DateiZumErstellen = FSO.CreateTextFile("C:\Test\Testdatei.txt")

    DateiZumErstellen.Write "Testzeile"
    DateiZumErstellen.Close

End Sub

Bitte beachten Sie, dass der Inhalt nicht in Anführungszeichen gesetzt wird.

Schreiben in eine bestehende Textdatei

Um in eine bestehende Textdatei zu schreiben, können Sie die Methode OpenTextFile von FileSystemObject mit dem ForWriting-Modus verwenden.

Sub FSOInTextdateiSchreiben() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set DateiZumSchreiben = FSO.OpenTextFile("C:\Test\Testdatei.txt", ForWriting)

    DateiZumSchreiben.Write "Testzeile"
    DateiZumSchreiben.Close

End Sub

Bitte beachten Sie, dass Sie nicht unbedingt FileSystemObject benötigen, um in eine bestehende Textdatei zu schreiben. Das obige Beispiel wird in diesem Code auf andere Weise gezeigt (siehe anderes Beispiel im Abschnitt Datenbereich in Textdatei):

Sub InTextdateiSchreiben()
    Dim Dateiname As String
    Dateiname = "C:\Test\Testdatei.txt"

    Open Dateiname For Output As #1
    Print #1, "Testzeile"
    Close #1

End Sub

Bitte beachten Sie, dass die Verwendung des Befehls Write anstelle von Print dazu führt, dass der hinzugefügte Inhalt in Anführungszeichen gesetzt wird. Wenn Sie beide Befehle in Ihrem Makro haben,

Write #1, "Testzeile #1"
Print #1, "Testzeile #2"

wird sich eine Textdatei wie die folgende ergeben:

vba textdatei write print

 

An die Textdatei anhängen

Wenn Sie den Modus im obigen Code in ForAppending ändern, kann eine Zeile am Ende der Textdatei hinzugefügt werden:

Set DateiZumSchreiben = FSO.OpenTextFile("C:\Test\Testdatei.txt", ForAppending)

Die WriteLine-Methode

Diese Methode fügt die Eingabezeichenfolge als separate Zeile an den vorhandenen Inhalt an.

Die Write-Methode

Die Eingabezeichenkette wird in die Zeile des vorhandene Inhalts eingefügt.

Die WriteBlankLines

Diese Methode erhält als Parameter die Anzahl der leeren Zeilen, die in die Textdatei geschrieben werden sollen.

Der folgende Code veranschaulicht den Unterschied zwischen den verschiedenen Schreibmethoden:

Sub SchreibMethoden()
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set DateiZumSchreiben = FSO.OpenTextFile("C:\Test\Testdatei.txt", ForAppending)

    DateiZumSchreiben.Write "Testzeile #1 "
    DateiZumSchreiben.Write "Testzeile #2"
    DateiZumSchreiben.WriteBlankLines (3)
    DateiZumSchreiben.WriteLine "Testzeile #3"
    DateiZumSchreiben.WriteLine "Testzeile #4"
    DateiZumSchreiben.Close

End Sub

Und das Ergebnis:

textdatei write writeline writeblanklines

 

Datenbereich in Textdatei

Wenn Sie einen Datenbereich aus Ihrem Arbeitsblatt in eine Textdatei ausgeben möchten, können Sie diesen Code verwenden:

Sub InTextdateiAusgeben()
    Dim Dateiname As String, Zeilentext As String
    Dim MeinBereich As Range, i, j
    
    Dateiname = "C:\Test\Testdatei.txt" 'Sie können den Namen der Textdatei, die Sie erstellen möchten, hier angeben
    
    Open Dateiname For Output As #1
    
    Set MeinBereich = Range("Daten") 'es wird davon ausgegangen, dass Sie einen Datenbereich namens "Daten" auf Ihrem Arbeitsblatt haben
    For i = 1 To MeinBereich.Rows.Count
        For j = 1 To MeinBereich.Columns.Count
            Zeilentext = IIf(j = 1, "", Zeilentext & ",") & MeinBereich.Cells(i, j) 'die zu erstellende Textdatei hat ein Komma als Trennzeichen
        Next j
        Print #1, Zeilentext 'Wenn Sie den Befehl Write anstelle von Print verwenden, werden Ihre Daten in der Ausgabetextdatei in Anführungszeichen gesetzt
    Next i

    Close #1

End Sub

Array in Textdatei

Sie können Ihren Daten-Array auch wie folgt in einer Textdatei speichern:

Sub ArrayInTextdateiSpeichern()
    Dim MeinArray As Variant
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")

    MeinArray = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))

    Set DateizumErstellen = FSO.CreateTextFile("C:\Test\Testdatei.txt")

    For n = 0 To UBound(MeinArray)
        DateizumErstellen.WriteLine MeinArray(n)(0) & "," & MeinArray(n)(1)
    Next
    
    DateizumErstellen.Close

End Sub
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples