VBA – In Textdatei schreiben
In this Article
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:
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:
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