VBA - zápis do textového souboru

Tento tutoriál předvede, jak zapisovat do textových souborů pomocí VBA.

Zapište do textového souboru

Níže uvedené kódy používají FileSystemObject. Abyste jej mohli používat, budete muset nastavit odkaz na knihovnu run-time skriptu VB.

Zapište do nového textového souboru

S CreateTextFile metoda FileSystemObject můžete vytvořit a poté přidat obsah do textového souboru:

123456789 Sub FSOCreateAndWriteToTextFile ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "test line"FileToCreate.CloseEnd Sub

Upozorňujeme, že obsah nebude uzavřen uvozovkami.

Zapište do existujícího textového souboru

K zápisu do existujícího textového souboru můžete použít OpenTextFile metoda FileSystemObject s ForWriting režimu.

123456789 Sub FSOWriteToTextFile ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "testovací řádek"FileToWrite.CloseEnd Sub

Vezměte prosím na vědomí, že k zápisu do existujícího textového souboru nepotřebujete nutně FileSystemObject. Výše uvedený příklad je zobrazen jiným způsobem v tomto kódu níže (viz další příklad v části Rozsah dat do textového souboru):

123456789 Sub WriteToTextFile ()Dim FileName as StringNázev souboru = "C: \ Test \ TestFile.txt"Otevřete FileName pro výstup jako #1Tisk č. 1, „testovací řádek“Zavřít #1End Sub

Vezměte prosím na vědomí, že použití příkazu Zápis namísto Tisk bude mít za následek přidání přidaného obsahu do uvozovek. Mít v makru oba příkazy

12 Napište č. 1, „testovací řádek č. 1“Tisk č. 1, „testovací řádek č. 2“

výsledkem bude textový soubor takto:

Programování VBA | Generátor kódu pracuje pro vás!

Připojit k textovému souboru

Změnou režimu ve výše uvedeném kódu na ForAppending lze na konec textového souboru přidat řádek:

1 Nastavit FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)

Metoda WriteLine

Tato metoda připojí vstupní řetězec jako samostatný řádek ke stávajícímu obsahu.

Metoda zápisu

Vstupní řetězec je připojen na stejný řádek jako stávající obsah.

Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!

WriteBlankLines

Tato metoda bere jako parametr počet prázdných řádků, které mají být zapsány do textového souboru.

Tento kód níže ukazuje rozdíl mezi různými metodami zápisu:

12345678910111213 Dílčí metody zápisu ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "testovací řádek č. 1"FileToWrite.Write "testovací řádek č. 2"FileToWrite.WriteBlankLines (3)Testovací řádek č. 3 FileToWrite.WriteLineTestovací řádek č. 4 FileToWrite.WriteLineFileToWrite.CloseEnd Sub

A výsledek:

Programování VBA | Generátor kódu pracuje pro vás!

Rozsah dat do textového souboru

Pokud chcete výstup datového rozsahu z listu do textového souboru, můžete použít tento kód:

12345678910111213141516171819 Dílčí výstupToTextFile ()Dim FileName jako řetězec, LineText jako řetězecDim MyRange As Range, i, jNázev_souboru = "C: \ Test \ TestFile.txt" 'zde můžete zadat název textového souboru, který chcete vytvořitOtevřete FileName pro výstup jako #1Nastavit MyRange = Range ("data") 'předpokládá, že máte na listu datový rozsah s názvem „data“Pro i = 1 To MyRange.Rows.CountPro j = 1 do MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'vytváření textového souboru bude mít oddělovač čárkyDalší jPrint #1, LineText 'using Write write instead of Print will result in having your data in quotes in the output text filePříště jáZavřít #1End Sub

Pole do textového souboru

Své pole dat můžete také uložit do textového souboru takto:

12345678910111213141516 Sub SaveArrayToTextFile ()Dim MyArray jako variantaDim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Nastavit FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")Pro n = 0 až UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)dalšíFileToCreate.CloseEnd Sub
wave wave wave wave wave