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 |