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 |