Denne vejledning viser, hvordan du skriver til tekstfiler ved hjælp af VBA.
Skriv til en tekstfil
Nedenstående koder bruger FileSystemObject. For at kunne bruge det skal du angive en reference til VB-scriptets kørebibliotek.
Skriv til ny tekstfil
Med CreateTextFile metode til FileSystemObject du kan oprette og derefter tilføje indhold til en tekstfil:
123456789 | Sub FSOCreateAndWriteToTextFile ()Dim FSO som nyt filsystemsystemIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "testlinje"FileToCreate.CloseAfslut Sub |
Bemærk, at indholdet ikke vil være omsluttet af citater.
Skriv til eksisterende tekstfil
For at skrive til en eksisterende tekstfil kan du bruge OpenTextFile metode til FileSystemObject med For at skrive mode.
123456789 | Sub FSOWriteToTextFile ()Dim FSO som nyt filsystemsystemIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "testlinje"FileToWrite.LukAfslut Sub |
Bemærk, at du ikke nødvendigvis har brug for FileSystemObject for at skrive til en eksisterende tekstfil. Ovenstående eksempel vises på en anden måde i denne kode herunder (se andet eksempel i afsnittet Data Range to Text File):
123456789 | Sub WriteToTextFile ()Dim filnavn som strengFilnavn = "C: \ Test \ TestFile.txt"Åbn filnavn til output som #1Udskriv nr. 1, "testlinje"Luk #1Afslut Sub |
Bemærk, at brug af kommandoen Skriv i stedet for Udskriv vil resultere i, at det tilføjede indhold er omsluttet af anførselstegn. Har begge kommandoer i din makro
12 | Skriv #1, "testlinje #1"Udskriv #1, "testlinje #2" |
vil resultere i en tekstfil som denne:
VBA -programmering | Kodegenerator virker for dig!
Tilføj til tekstfil
Ved at ændre tilstanden i ovenstående kode til ForAppending, kan der tilføjes en linje til slutningen af tekstfilen:
1 | Indstil FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending) |
WriteLine -metode
Denne metode tilføjer inputstrengen som en separat linje til det eksisterende indhold.
Skriv metode
Inputstrengen tilføjes på samme linje som det eksisterende indhold.
Træt af at søge efter eksempler på VBA -kode? Prøv AutoMacro!
WriteBlankLines
Denne metode tager antallet af tomme linjer, der skal skrives til tekstfilen som en parameter.
Denne kode nedenfor illustrerer forskellen mellem de forskellige skrivemetoder:
12345678910111213 | Sub WriteMethods ()Dim FSO som nyt filsystemsystemIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "testlinje #1"FileToWrite.Write "testlinje #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "testlinje #3"FileToWrite.WriteLine "testlinje #4"FileToWrite.LukAfslut Sub |
Og resultatet:
VBA -programmering | Kodegenerator virker for dig!
Dataområde til tekstfil
Hvis du vil sende et dataområde fra dit regneark til en tekstfil, kan du bruge denne kode:
12345678910111213141516171819 | Sub OutputToTextFile ()Dim filnavn som streng, LineText som strengDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'du kan her angive tekstfilnavnet, du vil opretteÅbn filnavn til output som #1Indstil MyRange = Range ("data") 'det forudsætter, at du har et dataområde med navnet "data" på dit regnearkFor i = 1 Til MyRange.Rows.CountFor j = 1 Til MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'tekstfilen, der opretter, har en kommaseparatorNæste jUdskriv #1, LineText 'ved hjælp af kommandoen Skriv i stedet for Udskriv vil resultere i at have dine data i anførselstegn i outputtekstfilenNæste iLuk #1Afslut Sub |
Array til tekstfil
Du kan også gemme dit array af data i en tekstfil som denne:
12345678910111213141516 | Sub SaveArrayToTextFile ()Dim MyArray som variantDim FSO som nyt filsystemsystemIndstil FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Indstil FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")For n = 0 Til UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)NæsteFileToCreate.CloseAfslut Sub |