In diesem Tutorial wird gezeigt, wie Sie mit VBA in Textdateien schreiben.
In eine Textdatei schreiben
Die folgenden Codes verwenden die FileSystemObject. Um es zu verwenden, müssen Sie einen Verweis auf die VB-Skript-Laufzeitbibliothek festlegen.
In neue Textdatei schreiben
Mit dem Textdatei erstellen Methode von FileSystemObject Sie können eine Textdatei erstellen und dann Inhalt hinzufügen:
123456789 | Sub FSOCreateAndWriteToTextFile()Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")Set FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")FileToCreate.Write "Testzeile"FileToCreate.CloseEnd Sub |
Bitte beachten Sie, dass Inhalte nicht in Anführungszeichen eingeschlossen werden.
In vorhandene Textdatei schreiben
Um in eine vorhandene Textdatei zu schreiben, können Sie die OpenTextFile Methode von FileSystemObject mit Zum Schreiben Modus.
123456789 | Sub FSOWriteToTextFile()Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForWriting)FileToWrite.Write "Testzeile"FileToWrite.CloseEnd Sub |
Bitte beachten Sie, dass Sie FileSystemObject nicht unbedingt benötigen, um in eine vorhandene Textdatei zu schreiben. Das obige Beispiel wird in diesem Code unten auf andere Weise gezeigt (siehe anderes Beispiel im Abschnitt Datenbereich zu Textdatei):
123456789 | Unter WriteToTextFile()Dim FileName As StringFileName = "C:\Test\TestFile.txt"Dateiname für Ausgabe als #1 öffnenDrucken Sie #1, "Testzeile"Schließen #1End Sub |
Bitte beachten Sie, dass die Verwendung des Befehls Schreiben anstelle von Drucken dazu führt, dass der hinzugefügte Inhalt in Anführungszeichen eingeschlossen wird. Beide Befehle in Ihrem Makro haben
12 | Schreiben Sie #1, "Testzeile #1"Drucken Sie #1, "Testzeile #2" |
ergibt eine Textdatei wie diese:
VBA-Programmierung | Code Generator arbeitet für Sie!
An Textdatei anhängen
Durch Ändern des Modus im obigen Code in ForAppending kann am Ende der Textdatei eine Zeile hinzugefügt werden:
1 | Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending) |
WriteLine-Methode
Diese Methode hängt die Eingabezeichenfolge als separate Zeile an den vorhandenen Inhalt an.
Schreibmethode
Die Eingabezeichenfolge wird in derselben Zeile wie der vorhandene Inhalt angehängt.
Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!
WriteBlankLines
Diese Methode verwendet als Parameter die Anzahl der Leerzeilen, die in die Textdatei geschrieben werden sollen.
Der folgende Code veranschaulicht den Unterschied zwischen den verschiedenen Schreibmethoden:
12345678910111213 | Unter WriteMethods()Dim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")Set FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending)FileToWrite.Write "Testzeile #1"FileToWrite.Write "Testzeile #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "Testzeile #3"FileToWrite.WriteLine "Testzeile #4"FileToWrite.CloseEnd Sub |
Und das Ergebnis:
VBA-Programmierung | Code Generator arbeitet für Sie!
Datenbereich zu Textdatei
Wenn Sie einen Datenbereich aus Ihrem Arbeitsblatt in eine Textdatei ausgeben möchten, können Sie diesen Code verwenden:
12345678910111213141516171819 | UnterausgabeToTextFile()Dim FileName As String, LineText As StringDim MyRange As Range, i, jFileName = "C:\Test\TestFile.txt" 'Sie können hier den Namen der Textdatei angeben, die Sie erstellen möchtenDateiname für Ausgabe als #1 öffnenSet MyRange = Range("data") 'es geht davon aus, dass Sie einen Datenbereich namens "data" auf Ihrem Arbeitsblatt habenFür i = 1 Zu MyRange.Rows.CountFür j = 1 Zu MyRange.Columns.CountLineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'die erstellte Textdatei wird ein Komma-Trennzeichen habenNächstes jPrint #1, LineText 'mit dem Write-Befehl anstelle von Print führt dazu, dass Ihre Daten in der Ausgabetextdatei in Anführungszeichen stehenAls nächstesSchließen #1End Sub |
Array in Textdatei
Sie können Ihr Datenarray auch in einer Textdatei wie folgt speichern:
12345678910111213141516 | Sub SaveArrayToTextFile()Dim MyArray als VarianteDim FSO als neues FileSystemObjectFSO setzen = CreateObject("Scripting.FileSystemObject")MyArray = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))Set FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")Für n = 0 an UBound(MyArray)FileToCreate.WriteLine MyArray(n)(0) & "," & MyArray(n)(1)NächsteFileToCreate.CloseEnd Sub |