Comment modifier des fichiers csv et texte avec VBA (macros Excel).
Date de publication:5 juillet 2022.
INFOMARTION > Comment modifier des fichiers csv et texte avec VBA (macros Excel).
Vue d'ensemble.
Je voudrais décrire comment éditer des fichiers csv et texte avec VBA (macros Excel). Cet article est destiné aux personnes qui souhaitent programmer les tâches suivantes
- Je veux ajouter des lignes à un fichier csv ou texte déjà existant. Je veux ajouter du texte au milieu d'une ligne.
- Je veux supprimer des lignes dans un fichier csv ou texte déjà existant.
Table des matières
1. Méthode de programmation
En conclusion, FileSystemObject n'a pas la capacité d'ajouter au milieu d'une ligne ou de supprimer une ligne spécifique, vous devez donc le programmer vous-même.
Des exemples de référence de la programmation sont donnés ci-dessous.
Comme elle est créée dans Function, j'espère que vous pouvez l'introduire telle quelle par copier-coller, et appeler la méthode depuis Sub.
'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
Pour l'utiliser, passez les arguments comme suit.
- filePath・・・Il s'agira du chemin complet du fichier. Exemple.)C:\Users\user\Desktop\test\test.txt
- mode・・・Passez vrai, faux. Si c'est vrai, ajoutez. Si elle est fausse, la ligne est supprimée.
- targetRow・・・Spécifie le nombre de lignes cibles. Dans le cas des ajouts, il s'agit du nombre de lignes à ajouter, et dans le cas des suppressions, il s'agit du nombre de lignes à supprimer.
- targetInput・・・Pour les postscripts, indiquez la valeur à ajouter. Il n'est pas utilisé pour la suppression et peut être une valeur arbitraire. Les lettres vides sont également acceptables.
- lineBreakType・・・Définition des caractères de nouvelle ligne. Si c'est vrai, vbCrLf. vbLf si Faux. En bref, True pour les fichiers créés dans Windows.
Le codage des caractères est UTF-8, mais si vous voulez le changer, modifiez directement le code de la fonction. Il y a deux endroits où ".Charset = "UTF-8"".
Un exemple de mise en œuvre d'un appel de fonction réel est présenté ci-dessous.
Sub test()
'Exemple d'ajout de test123 à la ligne 5 de test.txt.(Fichiers créés dans Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", True, 5, "test123", True
'Exemple de suppression de la ligne 5 de test.txt.(Fichiers créés dans Windows.)
editFile "C:\Users\user\Desktop\test\test.txt", False, 5, "", True
End Sub
Si vous voulez ajouter un fichier csv, faites de l'argument de la valeur à ajouter une valeur séparée par des virgules, et une valeur séparée par des virgules sera ajoutée. Exemple.)"test1,test2,test3"
2. Description du code.
C'est la fin des instructions sur la façon d'utiliser le système, suivie d'une explication du code.
Les détails peuvent être trouvés dans le code, mais un flux de processus approximatif est le suivant.
Pour le post-scriptum.
- ①Lecture des fichiers texte dans les chemins passés en arguments.
- ②Le nombre de caractères jusqu'au nombre de lignes passées en argument est spécifié à partir du nombre de nouvelles lignes. Par exemple, pour la ligne 5, il y a quatre sauts de ligne avant la ligne 5, donc trouvez la position où se trouve le quatrième saut de ligne
- ③Récupérer les informations jusqu'à la ligne 4.
- ④(2) Acquérir les informations à partir de la ligne 5 de la même manière qu'en (2).
- ⑤Les informations de (3), les informations à ajouter passées en argument et les informations de (4) sont combinées ensemble.
- ⑥Créez un fichier basé sur les informations de (5) et écrasez le fichier.
En cas de suppression
- ①Lecture des fichiers texte dans les chemins passés en arguments.
- ②Le nombre de caractères jusqu'au nombre de lignes passées en argument est spécifié à partir du nombre de nouvelles lignes. Par exemple, pour la ligne 5, il y a quatre sauts de ligne avant la ligne 5, donc trouvez la position où se trouve le quatrième saut de ligne
- ③Récupérer les informations jusqu'à la ligne 4.
- ④(2) Acquérir les informations à partir de la ligne 6 de la même manière qu'en (2).
- ⑤Les informations des points (iii) et (iv) sont combinées ensemble. (Créez une chaîne sans cinquième ligne.)
- ⑥Créez un fichier basé sur les informations de (5) et écrasez le fichier.
Dans le cas de l'ajout et de la suppression, il s'agit de la même chose, mais au lieu de modifier le fichier, on fait comme si seules les informations nécessaires étaient extraites du fichier d'origine et qu'un nouveau fichier était créé et enregistré par-dessus.
3. résumé
Si vous rencontrez des problèmes pour modifier des fichiers csv/texte avec VBA (macros Excel), veuillez vous reporter à cette section.
Merci d'avoir regardé jusqu'à la fin.
■INFORMATION
Veuillez cliquer ici pour accéder à la page d'accueil d'INFORMATION.
■PROFILE
Veuillez cliquer ici pour un profil.
■Coordonnées de contact.
Pour toute question concernant cet article, veuillez nous contacter ici.