VBA - Schrijven naar tekstbestand

Deze zelfstudie laat zien hoe u met VBA naar tekstbestanden kunt schrijven.

Naar een tekstbestand schrijven

De onderstaande codes gebruiken de BestandssysteemObject. Om het te gebruiken, moet u een verwijzing naar de VB-script runtime-bibliotheek instellen.

Schrijven naar nieuw tekstbestand

Met de Tekstbestand maken methode van BestandssysteemObject u kunt inhoud maken en vervolgens toevoegen aan een tekstbestand:

123456789 Sub-FSOCreateAndWriteToTextFile()Dim FSO als nieuw bestandssysteemobjectStel FSO = CreateObject ("Scripting.FileSystemObject") inStel FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt") inFileToCreate.Write "testregel"FileToCreate.CloseEinde sub

Houd er rekening mee dat de inhoud niet tussen aanhalingstekens wordt geplaatst.

Schrijven naar bestaand tekstbestand

Om naar een bestaand tekstbestand te schrijven, kunt u de OpenTextFile methode van BestandssysteemObject met Om te schrijven modus.

123456789 Sub FSOWriteToTextFile()Dim FSO als nieuw bestandssysteemobjectStel FSO = CreateObject ("Scripting.FileSystemObject") inStel FileToWrite = FSO.OpenTextFile in ("C:\Test\TestFile.txt", ForWriting)FileToWrite.Write "testregel"FileToWrite.CloseEinde sub

Houd er rekening mee dat u FileSystemObject niet per se nodig hebt om naar een bestaand tekstbestand te schrijven. Het bovenstaande voorbeeld wordt op een andere manier weergegeven in deze onderstaande code (zie een ander voorbeeld in de sectie Gegevensbereik naar tekstbestand):

123456789 Sub WriteToTextFile()Dim bestandsnaam als stringBestandsnaam = "C:\Test\TestFile.txt"Open bestandsnaam voor uitvoer als #1Print #1, "testlijn"Sluiten #1Einde sub

Houd er rekening mee dat het gebruik van de opdracht Schrijven in plaats van Afdrukken ertoe leidt dat de toegevoegde inhoud tussen aanhalingstekens staat. Beide commando's in je macro hebben

12 Schrijf #1, "testlijn #1"Afdrukken #1, "testlijn #2"

resulteert in een tekstbestand zoals dit:

VBA-programmering | Code Generator werkt voor u!

Toevoegen aan tekstbestand

Door de modus in de bovenstaande code te wijzigen in ForAppending, kan een regel worden toegevoegd aan het einde van het tekstbestand:

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

WriteLine-methode

Deze methode voegt de invoerreeks als een aparte regel toe aan de bestaande inhoud.

Schrijfmethode

De invoerreeks wordt op dezelfde regel toegevoegd als de bestaande inhoud.

Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!

SchrijvenBlancoLijnen

Deze methode neemt het aantal lege regels dat naar het tekstbestand moet worden geschreven als parameter.

Deze code hieronder illustreert het verschil tussen de verschillende schrijfmethoden:

12345678910111213 Sub SchrijfMethoden()Dim FSO als nieuw bestandssysteemobjectStel FSO = CreateObject ("Scripting.FileSystemObject") inStel FileToWrite = FSO.OpenTextFile in ("C:\Test\TestFile.txt", ForAppending)FileToWrite.Write "testregel #1"FileToWrite.Write "testregel #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "testregel #3"FileToWrite.WriteLine "testregel #4"FileToWrite.CloseEinde sub

En het resultaat:

VBA-programmering | Code Generator werkt voor u!

Gegevensbereik naar tekstbestand

Als u een gegevensbereik van uw werkblad naar een tekstbestand wilt uitvoeren, kunt u deze code gebruiken:

12345678910111213141516171819 Sub-uitvoerToTextFile()Dim bestandsnaam als tekenreeks, regeltekst als tekenreeksDim MyRange As Range, i, jFileName = "C:\Test\TestFile.txt" 'u kunt hier de tekstbestandsnaam opgeven die u wilt makenOpen bestandsnaam voor uitvoer als #1Stel MyRange = Range ("data") in 'het gaat ervan uit dat u een gegevensbereik met de naam 'data' op uw werkblad hebtVoor i = 1 Naar MyRange.Rows.CountVoor j = 1 Naar MyRange.Columns.CountLineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'het tekstbestand dat wordt gemaakt, heeft een kommascheidingstekenvolgende jPrint #1, LineText 'het gebruik van de Write-opdracht in plaats van Print zal ertoe leiden dat uw gegevens tussen aanhalingstekens in het uitvoertekstbestand staanvolgende iSluiten #1Einde sub

Array naar tekstbestand

U kunt uw reeks gegevens ook opslaan in een tekstbestand zoals dit:

12345678910111213141516 Sub SaveArrayToTextFile()Dim MyArray als variantDim FSO als nieuw bestandssysteemobjectStel FSO = CreateObject ("Scripting.FileSystemObject") inMyArray = Array(Array("00", "01"), Array("10", "11"), Array ("20", "21"))Stel FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt") inVoor n = 0 Naar UBound(MyArray)FileToCreate.WriteLine MyArray(n)(0) & "," & MyArray(n)(1)VolgendeFileToCreate.CloseEinde sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave