VBA - Skriv til tekstfil

Innholdsfortegnelse

Denne opplæringen vil demonstrere hvordan du skriver til tekstfiler ved hjelp av VBA.

Skriv til en tekstfil

Kodene nedenfor bruker FileSystemObject. For å bruke det, må du angi en referanse til VB-skriptets kjøretidsbibliotek.

Skriv til ny tekstfil

Med CreateTextFile Metode av FileSystemObject du kan opprette og deretter legge til innhold i en tekstfil:

123456789 Sub FSOCreateAndWriteToTextFile ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "testlinje"FileToCreate.CloseSlutt Sub

Vær oppmerksom på at innholdet ikke vil være omsluttet av anførselstegn.

Skriv til eksisterende tekstfil

For å skrive til en eksisterende tekstfil kan du bruke OpenTextFile Metode av FileSystemObject med For Skriving modus.

123456789 Sub FSOWriteToTextFile ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "testlinje"FileToWrite.LukkSlutt Sub

Vær oppmerksom på at du ikke nødvendigvis trenger FileSystemObject for å skrive til en eksisterende tekstfil. Eksemplet ovenfor er vist på en annen måte i denne koden nedenfor (se annet eksempel i delen Dataområde til tekstfil):

123456789 Sub WriteToTextFile ()Dim filnavn som strengFilnavn = "C: \ Test \ TestFile.txt"Åpne filnavn for utdata som nr. 1Skriv ut nr. 1, "testlinje"Lukk #1Slutt Sub

Vær oppmerksom på at bruk av kommandoen Skriv i stedet for Skriv ut vil resultere i at det ekstra innholdet er omsluttet av anførselstegn. Å ha begge kommandoene i makroen

12 Skriv nr. 1, "testlinje #1"Skriv ut #1, "testlinje #2"

vil resultere i en tekstfil som denne:

VBA -programmering | Kodegenerator fungerer for deg!

Legg til tekstfil

Ved å endre modusen i koden ovenfor til ForAppending, kan en linje legges til slutten av tekstfilen:

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

WriteLine -metode

Denne metoden legger til inndatastrengen som en egen linje til det eksisterende innholdet.

Skrivemetode

Inndatastrengen legges til på samme linje som det eksisterende innholdet.

Lei av å søke etter eksempler på VBA -kode? Prøv AutoMacro!

WriteBlankLines

Denne metoden tar antallet tomme linjer som skal skrives til tekstfilen som en parameter.

Denne koden nedenfor illustrerer forskjellen mellom de forskjellige skrivemetodene:

12345678910111213 Sub WriteMethods ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett 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.LukkSlutt Sub

Og resultatet:

VBA -programmering | Kodegenerator fungerer for deg!

Dataområde til tekstfil

Hvis du vil sende et dataområde fra regnearket til en tekstfil, kan du bruke denne koden:

12345678910111213141516171819 Sub OutputToTextFile ()Dim filnavn som streng, LineText som strengDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'du kan angi tekstfilnavnet du vil opprette herÅpne filnavn for utdata som nr. 1Angi MyRange = Range ("data") 'det forutsetter at du har et dataområde som heter "data" i regnearketFor i = 1 Til MyRange.Rows.CountFor j = 1 Til MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'tekstfilen som oppretter vil ha en kommaseparatorNeste jSkriv ut #1, LineText 'ved hjelp av Skriv -kommandoen i stedet for Skriv ut vil resultere i at dataene dine står i anførselstegn i utdatafilenNeste jegLukk #1Slutt Sub

Array til tekstfil

Du kan også lagre dataene dine i en tekstfil som denne:

12345678910111213141516 Sub SaveArrayToTextFile ()Dim MyArray som variantDim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Sett FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")For n = 0 Til UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)NesteFileToCreate.CloseSlutt Sub

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave