Wie man csv- und Textdateien mit VBA (Excel-Makros) bearbeitet.
Datum der Veröffentlichung:5. Juli 2022.
INFOMARTION > Wie man csv- und Textdateien mit VBA (Excel-Makros) bearbeitet.
Überblick.
Ich möchte beschreiben, wie man csv- und Textdateien mit VBA (Excel-Makros) bearbeitet. Dieser Artikel ist für Personen bestimmt, die die folgenden Aufgaben programmieren wollen
- Ich möchte Zeilen zu einer bereits vorhandenen CSV- oder Textdatei hinzufügen. Ich möchte Text in der Mitte einer Zeile hinzufügen.
- Ich möchte Zeilen in einer bereits vorhandenen csv- oder Textdatei löschen.
Inhaltsübersicht
1. Programmiermethode
Zusammenfassend lässt sich sagen, dass FileSystemObject nicht in der Lage ist, in der Mitte einer Zeile anzuhängen oder eine bestimmte Zeile zu löschen, so dass Sie dies selbst programmieren müssen.
Nachstehend finden Sie Beispiele für die Programmierung.
Da es in Function erstellt wird, hoffe ich, dass Sie es durch Kopieren und Einfügen einfügen und die Methode von Sub aufrufen können.
'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
Um es zu verwenden, geben Sie die folgenden Argumente an.
- filePath・・・Dies ist der vollständige Pfad der Datei. Beispiel.)C:\Users\user\Desktop\test\test.txt
- mode・・・Pass true, false. Wenn True, hinzufügen. Wenn false, wird die Zeile gelöscht.
- targetRow・・・Gibt die Anzahl der Zielzeilen an. Bei Hinzufügungen handelt es sich um die Anzahl der hinzuzufügenden Zeilen, bei Löschungen um die Anzahl der zu löschenden Zeilen.
- targetInput・・・Bei Postskripten geben Sie den Wert an, der angehängt werden soll. Er wird nicht für die Löschung verwendet und kann ein beliebiger Wert sein. Auch leere Buchstaben sind zulässig.
- lineBreakType・・・Setzen von Zeilenumbruchzeichen. Wenn True, vbCrLf. vbLf if False. Kurz gesagt: Wahr für Dateien, die in Windows erstellt wurden.
Die Zeichenkodierung ist UTF-8, aber wenn Sie sie ändern wollen, müssen Sie den Funktionscode direkt ändern. Es gibt zwei Stellen, an denen ".Charset = "UTF-8"" steht.
Ein Beispiel für die Implementierung eines aktuellen Funktionsaufrufs ist unten dargestellt.
Sub test()
'Beispiel für das Anhängen von test123 an Zeile 5 von test.txt.(In Windows erstellte Dateien.)
editFile "C:\Users\user\Desktop\test\test.txt", True, 5, "test123", True
'Beispiel für das Löschen der Zeile 5 von test.txt.(In Windows erstellte Dateien.)
editFile "C:\Users\user\Desktop\test\test.txt", False, 5, "", True
End Sub
Wenn Sie als csv-Datei anhängen möchten, geben Sie als Argument für den anzuhängenden Wert einen durch Komma getrennten Wert an, und es wird ein durch Komma getrennter Wert angehängt. Beispiel.)"test1,test2,test3"
2. Code Beschreibung.
Dies ist das Ende der Anleitung zur Verwendung des Systems, gefolgt von einer Erklärung des Codes.
Die Einzelheiten sind im Code zu finden, aber ein grober Ablauf sieht wie folgt aus.
Für das Postskriptum.
- ①Lesen von Textdateien in den als Argumente übergebenen Pfaden.
- ②Die Anzahl der Zeichen bis zur Anzahl der im Argument übergebenen Zeilen wird durch die Anzahl der Zeilenumbrüche bestimmt. In Zeile 5 gibt es beispielsweise vier Zeilenumbrüche vor Zeile 5, also suchen Sie die Position, an der sich der vierte Zeilenumbruch befindet
- ③Abrufen von Informationen bis zu Zeile 4.
- ④(2) Erfassen Sie die Informationen ab Zeile 5 auf die gleiche Weise wie unter (2).
- ⑤Die Informationen in (3), die als Argument übergebenen anzufügenden Informationen und die Informationen in (4) werden miteinander kombiniert.
- ⑥Erstellen Sie eine Datei auf der Grundlage der Informationen in (5) und überschreiben Sie die Datei.
Im Falle der Löschung
- ①Lesen von Textdateien in den als Argumente übergebenen Pfaden.
- ②Die Anzahl der Zeichen bis zur Anzahl der im Argument übergebenen Zeilen wird durch die Anzahl der Zeilenumbrüche bestimmt. In Zeile 5 gibt es beispielsweise vier Zeilenumbrüche vor Zeile 5, also suchen Sie die Position, an der sich der vierte Zeilenumbruch befindet
- ③Abrufen von Informationen bis zu Zeile 4.
- ④(2) Erfassen Sie die Informationen ab Zeile 6 auf die gleiche Weise wie unter (2).
- ⑤Die Informationen in (iii) und (iv) werden miteinander kombiniert. (Erstellen Sie eine Zeichenkette ohne fünfte Zeile.)
- ⑥Erstellen Sie eine Datei auf der Grundlage der Informationen in (5) und überschreiben Sie die Datei.
Im Falle des Anhängens und Löschens ist beides dasselbe, aber anstatt die Datei zu bearbeiten, werden nur die notwendigen Informationen aus der Originaldatei extrahiert und eine neue Datei erstellt und gespeichert.
3. Zusammenfassung
Wenn Sie Probleme bei der Bearbeitung von csv-/Textdateien mit VBA (Excel-Makros) haben, lesen Sie bitte diesen Abschnitt.
Danke, dass Sie bis zum Ende zugesehen haben.
■INFORMATION
Bitte klicken Sie hier, um zur Seite INFORMATIONEN zu gelangen.
■PROFILE
Bitte klicken Sie hier für ein Profil.
■Kontaktinformationen.
Wenn Sie Fragen zu diesem Artikel haben, kontaktieren Sie uns bitte hier.