Registriert seit: 01.02.2016
Version(en): 2010
Hallo, zunächst wünsche ich ein frohes Osterfest. Ich habe eine Standardfrage, die wahrscheinlich hier schon hundertmal gelöst wurde, aber ich möchte nicht stundenlang suchen. Ich möchte eine gegebene Textdatei als String einlesen, den Text etwas manipulieren und danach den geänderten Text wieder abspeichern. Wie bekomme ich die Abspeicherung hin? Code: Sub Textmanipulation()
Dim i%, strString, f, g f = "ä,ü,ö,Ä,Ü,Ö": g = "ae,ue,oe,Ae,Ue,Oe"
f = Split(f, ","): g = Split(g, ",")
Dim FSO As FileSystemObject Set FSO = New FileSystemObject
strString = FSO.OpenTextFile("C:\000 Backup Txt\M.txt").ReadAll
For i = LBound(f) To UBound(f) strString = Replace(strString, f(i), g(i)) Next
'Wie speichere ich jetzt die Änderungen??? FSO.OpenTextFile("C:\000 Backup Txt\M.txt").Close
End Sub
Danke für eure Hilfe.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Moin! Du kommst da ein wenig mit Deinen Objekten durcheinander! Teste mal: Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 01.02.2016
Version(en): 2010
Hallo Ralf, bist du sicher? strString ist ja der Textstring der Datei in welchem der Inhalt abgespeichert wird. Geht bei mir nicht. Habe mittlerweile weiter gefummelt und eine funktionierte Lösung erstellt. Bin mir aber sicher nicht das Optimum zu haben. Code: Sub Textmanipulation() Dim i%, strString, f, g f = "ä,ü,ö,Ä,Ü,Ö": g = "ae,ue,oe,Ae,Ue,Oe" f = Split(f, ","): g = Split(g, ",")
Dim FSO As FileSystemObject Set FSO = New FileSystemObject Set datei = FSO.OpenTextFile("C:\000 Backup Txt\Z.txt")
strString = datei.ReadAll
For i = LBound(f) To UBound(f) strString = Replace(strString, f(i), g(i)) Next Debug.Print
datei.Close 'Geht aber ändert nichts! 'strString.Close 'Geht nicht, Strinder manipuliert wird
Set DatSa = FSO.OpenTextFile("C:\000 Backup Txt\Z.txt", ForWriting) DatSa.Write strString DatSa.Close
End Sub
Nach meiner Recherche, "habe aber diagonal in Englisch gelesen!!" wird bei strString = datei.Readall der String eingelesen, die Datei selbst aber auch sofort wieder danach geschlossen. Ich muss also die Datei wieder öffnen und danach den manipulierten String strString einsetzen. Zudem muss : Code: Set DatSa = FSO.OpenTextFile("C:\000 Backup Txt\Z.txt", ForWriting)
auch da stehen wo es steht, also unterhalb der Stringmanipulation. Aber das ist bei mir alles in Anführungszeichen, weill ich da schnell was zusammengebastelt habe. Hier gibt es starkten "Verschönerungsbedarf". Ach ja, steht M.txt, benutze ich jetzt Z.Txt.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
01.04.2018, 11:42
(Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2018, 11:43 von RPP63.)
So, ich hatte ein wenig Zeit und jetzt ist es getestet und überarbeitet. Modul Modul1Option Explicit
Sub Textmanipulation()
Dim i%, strString$, f, g
Dim FSO As New FileSystemObject
Dim Stream As TextStream
f = Split("ä ü ö Ä Ü Ö ß"): g = Split("ae ue oe Ae Ue Oe ss")
Set Stream = FSO.OpenTextFile("H:\Umlaute.txt", ForReading)
strString = Stream.ReadAll
Set Stream = FSO.OpenTextFile("H:\Umlaute.txt", ForWriting)
For i = Lbound(f) To Ubound(f)
strString = Replace(strString, f(i), g(i))
Next
Stream.Write strString
Stream.Close
End Sub
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• Algor
Registriert seit: 01.02.2016
Version(en): 2010
Danke Ralf, das sieht schon wesentlich besser aus.
Aber ich glaube, was die Manipulationen des Textes angeht werde
ich in Zukunft wohl bestimmt noch einige Fragen haben.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Macht nix! Aber mal ein wenig Lesefutter: https://www.a-coding-project.de/ratgeber/fso(ist zwar Java, macht aber nichts) http://vb-tec.de/dateien.htm("altertümliche" Textmanipulation) Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• Algor
Registriert seit: 29.09.2015
Version(en): 2030,5
01.04.2018, 12:38
(Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2018, 12:41 von snb.)
Code: Sub M_snb() sn = Split("ä ü ö Ä Ü Ö ß ae ue oe Ae Ue Oe ss")
with createobject("scripting.filesystemobject") c00=.OpenTextFile("H:\Umlaute.txt").readall
For j =0 to ubound(sn)\2+1 c00= Replace(c00, sn(j), sn(j+7)) Next
.createtextfile("H:\Umlaute.txt").write c00 end with End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Algor
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
werden hier die Umlaute (ä) durch 2 Buchstaben (ae) ersetzt oder anders rum?
Falls zweiteres, halte ich es nicht für sinnvoll, die Umlaute generell umzutauschen. Es folgt sonst so was wie "Feür" anstatt "Feuer".
|