Gast52394 meint, dass RegEx hier nicht notwendig ist, da hier keine regulären Ausdrücke Verwendung finden (was der eigentliche Zweck dieser Klasse ist).
Du tust also einfach:
strZeile = Replace$(strZeile, strText, strErsetzt, Count:=1, Compare:=vbTextCompare)
strZeile = Replace$(strZeile, strText1, strErsetzt1, Count:=1, Compare:=vbTextCompare)
strZeile = Replace$(strZeile, strText2, strErsetzt1, Count:=1, Compare:=vbTextCompare)
strZeile = Replace$(strZeile, strText3, strErsetzt1, Count:=1, Compare:=vbTextCompare)
strZeile = Replace$(strZeile, strText4, strErsetzt1, Count:=1, Compare:=vbTextCompare)
strZeile = Replace$(strZeile, strText5, strErsetzt1, Count:=1, Compare:=vbTextCompare)
intFilenumber = FreeFile()
Open Replace$(OrdnerPfad & strDatei, "Alt", "Neu") For Output As #intFilenumber
Print #intFilenumber, strZeile
Close #intFilenumber
Du bräuchtest theoretisch nicht mal das FSO zum Lesen/Schreiben. Lesen/Schreiben könntest du auch mit der Open-Anweisung (letzteres machst du ja schon). Das ginge sogar Zeilenweise und würde sich vermutlich auch anbieten da, soweit ich weiß CNC-Files Zeilenweise strukturiert sind (ein Befehl pro Zeile). Außerdem erlaubt es dir zwischendurch Excel mal einen Moment der Selbstfindung zu können, und auch andere Windows Anwendung mal zu Wort kommen zu lassen (siehe DoEvents).
Du könntest also über eine Schleife eine Datei zeilenweise einlesen, gegen das Gesuchte vergleichen und ggf. ausstauschen. Falls man davon ausgehen kann, das die gesuchte Zeile nur einmal vorkommt, könnte man hier sogar frühzeitig die Schleife verlassen und zur nächsten Datei springen. Das würde dann deutlich Durchlaufzeit ersparen. (aus der Annahme heraus habe ich z.b. oben im Codeschnipsel den Paramter Count mit dem Argument Eins (1) gefüttert)
Grüße
PS: Ich würde vorschlagen nicht jede beliebige Datei aus dem Verzeichnis einzulesen, sondern vorher auf Dateiendung und den Dateinamen auf den Inhalt "Alt" zu überprüfen... und bei Richtigkeit erst dann weiter arbeiten.
|