Comment Remplacer une Chaîne de caractères dans une Ligne d'un Fichier Texte à l'Aide FileSystemObject en VBA?
Je suis en train d'utiliser FileSystemObject méthodes pour trouver une ligne spécifique dans un fichier texte, et à l'intérieur de cette ligne, remplacer une chaîne de caractères. Je suis relativement nouveau à cela, que mon code actuel a excel ouvrir le fichier texte et de remplacer ce que j'en ai besoin pour remplacer puis enregistrez et fermez-le. De cette façon, n'est plus une option, comme ayant excel ouvrir le fichier texte est trop long et détient le fichier.
C'est dans quelle mesure j'ai obtenu jusqu'à présent.
-
Sub FindLines()
Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFSO = FSO.OpenTextFile("C:\Users\Carella Home\Desktop\boomboom.txt", ForReading, False)
Do Until objFSO.AtEndOfStream = True
go = objFSO.ReadLine
If InStr(1, go, "ant", vbTextCompare) > 0 Then
bo = Replace(go, "t", "wow")
End If
Loop
objFSO.Close
Set objFSO = FSO.OpenTextFile("C:\Users\Carella Home\Desktop\boomboom.txt", 2)
End Sub
-
Le mieux que je puisse faire est d'ouvrir le fichier pour écrire, mais je n'ai aucune idée de comment trouver la ligne et de la remplacer par la ligne que j'ai besoin de le remplacer.
S'il vous plaît laissez-moi savoir si, dans le cas où vous êtes prêt à aider/me guider dans la bonne direction, vous avez besoin de plus d'informations. J'ai beaucoup cherché et ont vu des gens suggérer d'autres façons de le faire. J'ai besoin d'apprendre à modifier les lignes de cette façon. Quelqu'un peut-il m'aider?
Merci d'avance!
-Anthony C.
- Par curiosité, pourquoi excel et pas de mot ou de quelque autre lecteur de texte?
- J'ai été en utilisant excel parce que c'est ce qui a été à l'origine me l'a enseigné. Le code VBA est dans un fichier qui est utilisé par beaucoup d'utilisateurs, donc après en avoir 10 de ces applications de lecture/écriture pour le même fichier à l'ouverture/fermeture d'excel a été trop & causer trop d'erreurs. J'ai besoin de quelque chose de plus rapide que d'ouvrir et fermer le fichier.
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si c'est la méthode la plus efficace, mais une idée serait d'utiliser le CreateTextFile méthode de la
FileSystemObject
, pour créer un autre fichier, vous pouvez écrire à.J'ai testé sur un fichier de petite taille et semble fonctionner comme prévu.
Modifié après la réponse acceptée pour éviter
.ReadLine
et.WriteLine
bouclesEnsuite, selon que vous voulez vous débarrasser de l ' "original" fichier, vous pouvez faire quelque chose comme:
readFile
avecForReading
. Si vous avez fait la partie facultative au fond, oùKill fileToRead: Name fileToWrite As fileToRead
, qui supprime le fichier d'origine et le remplace par le nouveau fichier.Ici est beaucoup plus rapide et plus courte de la méthode par rapport à la
FileSystemObject
Toutes vos données en fichier texte est maintenant dans le tableau
strData
Simplement de la boucle si le tableau et trouver le texte que vous souhaitez remplacer et de le réintégrer à la MÊME fichier..ReadLine
et.WriteLine
boucle.name
en tant que tel pour la méthode. Je suis juste en train de lire le fichier en mode binaire et puis les stocker dans le tableau à l'aide devbcrlf
comme un séparateur.