Hoe kan ik csv en tekst bestanden bewerken met VBA (Excel macro's).
Datum van publicatie:5 juli 2022.
INFOMARTION > Hoe kan ik csv en tekst bestanden bewerken met VBA (Excel macro's).
Overzicht.
Ik wil graag beschrijven hoe je csv en tekst bestanden kunt bewerken met VBA (Excel macro's). Dit artikel is bedoeld voor mensen die de volgende taken willen programmeren
- Ik wil rijen toevoegen aan een reeds bestaand csv of tekst bestand. Ik wil tekst toevoegen in het midden van een regel.
- Ik wil regels verwijderen in een reeds bestaand csv- of tekstbestand.
Inhoudsopgave
1. Programmeer methode
Kortom, FileSystemObject heeft niet de mogelijkheid om in het midden van een regel toe te voegen of een specifieke regel te verwijderen, dus je moet het zelf programmeren.
Referentievoorbeelden van programmering worden hieronder gegeven.
Aangezien het is gemaakt in Function, hoop ik dat je het kunt binnenhalen zoals het is door kopiëren en plakken, en het methodes van Sub kunt laten aanroepen.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\test.txt
'## mode false:delete, true:write
'## targetRow 10
'## targetInput If in write mode, any character
'## lineBreakType false:vbLf, true:vbCrLf
Function editFile(filePath As String, mode As Boolean, targetRow As Long, targetInput As String, lineBreakType As Boolean)
'File existence check
If Dir(filePath) = "" Then
MsgBox "File does not exist!"
Exit Function
End If
Dim tempText As String
Dim tempTextBefore As String
Dim tempTextNew As String
Dim tempTextAfter As String
Dim resultText As String
Dim i As Long
'File read
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile filePath
tempText = .ReadText
.Close
End With
Dim tempTextBeforeRow As Long
tempTextBeforeRow = 0
For i = 1 To targetRow - 1
If lineBreakType Then
tempTextBeforeRow = InStr(tempTextBeforeRow + 1, tempText, vbCrLf)
Else
tempTextBeforeRow = InStr(tempTextBeforeRow + 1, tempText, vbLf)
End If
Next i
If lineBreakType Then
tempTextBeforeRow = tempTextBeforeRow + 1
End If
tempTextBefore = Left(tempText, tempTextBeforeRow)
'write
If mode Then
tempTextAfter = Mid(tempText, tempTextBeforeRow + 1, Len(tempText))
If lineBreakType Then
tempTextNew = targetInput & vbCrLf
Else
tempTextNew = targetInput & vbLf
End If
resultText = tempTextBefore & tempTextNew & tempTextAfter
'delete
Else
Dim tempTextAfterRow As Long
tempTextAfterRow = 0
For i = 1 To CInt(targetRow)
If lineBreakType Then
tempTextAfterRow = InStr(tempTextAfterRow + 1, tempText, vbCrLf)
Else
tempTextAfterRow = InStr(tempTextAfterRow + 1, tempText, vbLf)
End If
Next i
If lineBreakType Then
tempTextAfterRow = tempTextAfterRow + 1
End If
tempTextAfter = Mid(tempText, tempTextAfterRow + 1, Len(tempText))
resultText = tempTextBefore & tempTextAfter
End If
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
If lineBreakType Then
.LineSeparator = -1
Else
.LineSeparator = 10
End If
.Open
.WriteText tempTextBefore & tempTextNew & tempTextAfter, 0
.SaveToFile filePath, 2
.Close
End With
End Function
Om het te gebruiken, geef je de volgende argumenten door.
- filePath・・・Dit zal het volledige pad van het bestand zijn. Voorbeeld.)C:\Users\user\Desktop\test\test.txt
- mode・・・Pas waar, onwaar. Indien waar, toevoegen. Indien onwaar, verwijder de rij.
- targetRow・・・Specificeert het aantal doelrijen. In het geval van toevoegingen is het het aantal toe te voegen regels en in het geval van schrappingen is het het aantal te schrappen regels.
- targetInput・・・Voor postscripts, specificeer de waarde die moet worden toegevoegd. Het wordt niet gebruikt voor verwijdering en kan een willekeurige waarde zijn. Lege letters zijn ook aanvaardbaar.
- lineBreakType・・・Instelling van newline-tekens. Indien waar, vbCrLf. vbLf als Onwaar. In het kort, True voor bestanden gemaakt in Windows.
De tekencodering is UTF-8, maar als u die wilt wijzigen, wijzigt u de Functiecode rechtstreeks. Er zijn twee plaatsen waar ".Charset = "UTF-8"".
Hieronder volgt een voorbeeldimplementatie van een werkelijke functie-oproep.
Sub test()
'Voorbeeld van het toevoegen van test123 aan regel 5 van test.txt.(Bestanden gemaakt in Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", True, 5, "test123", True
'Voorbeeld van het verwijderen van regel 5 van test.txt.(Bestanden gemaakt in Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", False, 5, "", True
End Sub
Als u wilt appenderen als een csv, maak dan van het argument van de toe te voegen waarde een door komma's gescheiden waarde, en een door komma's gescheiden waarde zal worden append. Voorbeeld.)"test1,test2,test3"
2. Code Omschrijving.
Dit is het einde van de instructies over het gebruik van het systeem, gevolgd door een uitleg van de code.
De details zijn te vinden in de code, maar een ruwe processtroom is als volgt.
Voor naschrift.
- ①Lezen van tekstbestanden in paden die als argumenten zijn doorgegeven.
- ②Het aantal tekens tot aan het aantal regels dat in het argument wordt doorgegeven, wordt bepaald aan de hand van het aantal nieuwe regels. Bijvoorbeeld, voor regel 5 zijn er vier regeleindes, dus zoek de positie waar de vierde regeleindes zich bevindt
- ③Haal informatie op tot en met regel 4.
- ④(2) Verzamel informatie vanaf regel 5 op dezelfde wijze als (2).
- ⑤De informatie in (3), de toe te voegen informatie die als argument wordt doorgegeven en de informatie in (4) worden samengevoegd.
- ⑥Maak een bestand aan op basis van de informatie in (5) en overschrijf het bestand.
In geval van schrapping
- ①Lezen van tekstbestanden in paden die als argumenten zijn doorgegeven.
- ②Het aantal tekens tot aan het aantal regels dat in het argument wordt doorgegeven, wordt bepaald aan de hand van het aantal nieuwe regels. Bijvoorbeeld, voor regel 5 zijn er vier regeleindes, dus zoek de positie waar de vierde regeleindes zich bevindt
- ③Haal informatie op tot en met regel 4.
- ④(2) Verzamel informatie vanaf regel 6 op dezelfde manier als (2).
- ⑤De informatie onder (iii) en (iv) wordt samengevoegd. (Maak een string zonder vijfde regel.)
- ⑥Maak een bestand aan op basis van de informatie in (5) en overschrijf het bestand.
In het geval van appending en deleting zijn beide hetzelfde, maar in plaats van het bestand te bewerken, wordt het gemaakt alsof alleen de noodzakelijke informatie uit het oorspronkelijke bestand wordt gehaald en wordt een nieuw bestand gemaakt en overgeslagen.
3. samenvatting
Indien u problemen heeft met het bewerken van csv/tekst bestanden met VBA (Excel macro's), raadpleeg dan deze sectie.
Bedankt voor het kijken tot het einde.
■INFORMATION
Klik hier om naar de bovenste pagina van INFORMATIE te gaan.
■PROFILE
■Contactgegevens.
Voor vragen over het artikel kunt u hier contact met ons opnemen.