VBA - Skriv till textfil

Innehållsförteckning

Denna handledning visar hur du skriver till textfiler med VBA.

Skriv till en textfil

Koderna nedan använder FileSystemObject. För att kunna använda det måste du ange en referens till VB-skriptets körtidsbibliotek.

Skriv till ny textfil

Med CreateTextFile metod av FileSystemObject du kan skapa och sedan lägga till innehåll i en textfil:

123456789 Sub FSOCreateAndWriteToTextFile ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Ställ in FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "testrad"FileToCreate.CloseAvsluta Sub

Observera att innehållet inte kommer att omges av citat.

Skriv till befintlig textfil

För att skriva till en befintlig textfil kan du använda OpenTextFile metod av FileSystemObject med För skrivande läge.

123456789 Sub FSOWriteToTextFile ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Ställ in FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "testrad"FileToWrite.CloseAvsluta Sub

Observera att du inte nödvändigtvis behöver FileSystemObject för att skriva till en befintlig textfil. Ovanstående exempel visas på ett annat sätt i den här koden nedan (se annat exempel i avsnittet Dataintervall till textfil):

123456789 Sub WriteToTextFile ()Dim filnamn som strängFileName = "C: \ Test \ TestFile.txt"Öppna filnamn för utmatning som #1Skriv ut #1, "testrad"Stäng #1Avsluta Sub

Observera att användningen av kommandot Skriv istället för Skriv ut kommer att resultera i att det tillagda innehållet omges av citattecken. Med båda kommandona i ditt makro

12 Skriv #1, "testrad #1"Skriv ut #1, "testrad #2"

resulterar i en textfil så här:

VBA -programmering | Kodgenerator fungerar för dig!

Lägg till textfil

Genom att ändra läget i ovanstående kod till ForAppending kan en rad läggas till i slutet av textfilen:

1 Ställ in FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)

WriteLine -metod

Denna metod lägger till inmatningssträngen som en separat rad till det befintliga innehållet.

Skrivmetod

Inmatningssträngen läggs till på samma rad som det befintliga innehållet.

Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!

WriteBlankLines

Denna metod tar antalet tomma rader som ska skrivas till textfilen som en parameter.

Denna kod nedan illustrerar skillnaden mellan de olika skrivmetoderna:

12345678910111213 Sub WriteMethods ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Ställ in FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "testrad #1"FileToWrite.Write "testrad #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "testrad #3"FileToWrite.WriteLine "testrad #4"FileToWrite.CloseAvsluta Sub

Och resultatet:

VBA -programmering | Kodgenerator fungerar för dig!

Dataintervall till textfil

Om du vill mata ut ett dataintervall från ditt kalkylblad till en textfil kan du använda den här koden:

12345678910111213141516171819 Sub OutputToTextFile ()Dim filnamn som sträng, LineText som strängDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'du kan här ange textfilnamnet du vill skapaÖppna filnamn för utmatning som #1Ange MyRange = Range ("data") 'det förutsätter att du har ett dataområde som heter "data" i ditt kalkylbladFör i = 1 Till MyRange.Rows.CountFör j = 1 till MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'textfilen skapar en kommaseparatorNästa jSkriv ut #1, LineText med kommandot Skriv istället för Skriv ut kommer att resultera i att dina data står i citattecken i utmatningstextfilenNästa iStäng #1Avsluta Sub

Array till textfil

Du kan också spara din datamängd i en textfil så här:

12345678910111213141516 Sub SaveArrayToTextFile ()Dim MyArray som variantDim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Ställ in FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")För n = 0 Till UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)NästaFileToCreate.CloseAvsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave