Textänderungen abspeichern
#1
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.
Top
#2
Moin!
Du kommst da ein wenig mit Deinen Objekten durcheinander!
Teste mal:
Code:
strString.Close

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)
Top
#3
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.
Top
#4
So, ich hatte ein wenig Zeit und jetzt ist es getestet und überarbeitet.


Modul Modul1
Option 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:
  • Algor
Top
#5
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.
Top
#6
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:
  • Algor
Top
#7
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Algor
Top
#8
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".
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste