Hoe maak je een tekstbestand en schrijf je ernaar met vba?
Als u tekst wilt maken met VBA-code, moet u de CreateTextFile-methode gebruiken. Met deze methode kunt u een locatie instellen waar u deze wilt maken. Deze methode heeft een syntaxis waarin u kunt opgeven of u het bestand op de locatie wilt overschrijven en kunt opgeven of het bestand wordt gemaakt als Unicode- of ASCII-bestand.
Maak een tekstbestand met VBA
Gebruik de volgende stappen:
- Eerst moet u een FileSystemObject- of Folder-object gebruiken om met de methode te gebruiken.
- Daarna moet u een ander object maken met behulp van de CreateTextFile-methode.
- In deze code hebben we TRUE gebruikt om te overschrijven als er al een bestand met dezelfde naam in de map staat.
- Aan het einde, wanneer u deze macro uitvoert, maakt u als volgt een nieuw tekstbestand in de map.
Sub create_text_file() 'object to use as folder Dim fld As Object Set fld = CreateObject("Scripting.FileSystemObject") 'using create text file method Dim myFile As Object Set myFile = fld.CreateTextFile("C:UsersDellDesktopmyFoldermyTextFile.txt", True) End Sub
Syntaxis van de CreateTextFile-methode
CreateTextFile (filename, [ overwrite, [ unicode ]])
- bestandsnaam: Pad en naam van het bestand dat u wilt maken.
- overschrijven: Booleaanse waarde om te definiëren of u het bestand wilt overschrijven (als het al bestaat) (optioneel).
- unicode: boolean om te definiëren of het bestand is gemaakt als Unicode- of ASCII-bestand (optioneel).
Schrijf naar een tekstbestand met VBA
U kunt twee instructies gebruiken om gegevens naar een tekstbestand te schrijven:
- Schrijven: Met deze instructie kunt u gegevens naar een tekstbestand schrijven, waar u komma’s tussen waarden, aanhalingstekens rond tekenreeksen en #-tekens rond datums zult plaatsen.
- Afdrukken: Met deze verklaring kunt u gegevens naar een tekstbestand schrijven met de exacte weergave die u in het Excel-spreadsheet heeft.
Nu zullen we voorbeelden voor beide uitspraken bekijken en begrijpen hoe we volledige code kunnen schrijven om naar een tekstbestand te schrijven. Maar daarvoor moet u enkele terminologieën begrijpen om de code te schrijven zoals u dat wilt.
- Voor uitvoer: U kunt deze opdracht gebruiken als u gegevens wilt schrijven of gegevens in een tekstbestand wilt wijzigen.
- Ter invoer: met dit commando kunt u gegevens uit een tekst halen, maar u kunt geen gegevens wijzigen en aan het bestand toevoegen.
- Toevoegen: Met deze opdracht kunt u nieuwe gegevens onderaan het tekstbestand toevoegen.
- FreeFile: Hiermee kunt u een bestandsnummer instellen dat niet wordt gebruikt voor het tekstbestand dat u wilt gebruiken, zodat u ernaar kunt verwijzen.
Laten we nu een code schrijven om gegevens in een tekstbestand in te voeren.
- Eerst moet u de variabelen declareren die u in de code wilt gebruiken.
- Daarna moet u het bereik definiëren dat u naar het tekstbestand moet schrijven. En gebruik het aantal cellen in het bereik als teller voor de lus door deze op een variabele in te stellen.
- Vervolgens moet u het adres instellen van het tekstbestand waaraan u gegevens wilt toevoegen.
- Van daaruit moet u de opdracht “FreeFile” declareren bij een variabele om het bestandsnummer te verkrijgen.
- Nu moet u een creatie maken met de opdracht “Uitvoer”, omdat u gegevens aan het bestand moet toevoegen.
- Ten slotte moet u de “For Next”-lus gebruiken om de bereikwaarden één voor één op te halen en deze aan het bestand toe te voegen.
- Bovendien moet u de opdracht close gebruiken om het tekstbestand te sluiten nadat de gegevens eraan zijn toegevoegd.
- Wanneer u deze macro uitvoert, worden uiteindelijk gegevens uit het bereik A1:A13 toegevoegd aan het tekstbestand dat u hebt opgeslagen in het door u genoemde pad.
Opmerking: Zorg ervoor dat u het pad van het tekstbestand van de code wijzigt volgens het pad dat u in uw systeem heeft.
Option Explicit Sub data_to_text_file() 'variables that you need to use in the code Dim TextFile As Integer Dim iCol As Integer Dim myRange As Range Dim cVal As Range Dim i As Integer Dim myFile As String 'define the range that you want to write Set myRange = Range("A1:A13") iCol = myRange.Count 'path to the text file (MAKE SURE TO CHANGE IT) myFile = "C:UsersDellDesktopNewFoldertextfile.txt" 'define FreeFile to the variable file number TextFile = FreeFile 'using append command to add text to the end of the file Open myFile For Output As TextFile 'loop to add data to the text file For i = 1 To iCol Print #TextFile, Cells(i, 1), Print #TextFile, Cells(i, 2) Next i 'close command to close the text file after adding data Close #TextFile End Sub