Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Text via VBA in Textdatei (txt) suchen und ersetzen
zurück: VBA Makro (Zeilenbereich) nach Kriterium färben weiter: UserForm ohne Schließen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
fuxl66
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Sep 2012, 10:00
Rufname:

Text via VBA in Textdatei (txt) suchen und ersetzen - Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Hallo erstmal. Sehr umfangreiches Forum hier an dem ich mich gerne beteiligen würde. Zuerst einmal bräuchte ich jedoch eure Hilfe.

Ich habe hier ein File "Alt.txt"
In diesem File würde ich gerne automatisiert via VBA einen Textbaustein ersetzen und als "Neu.txt" abspeichern.

Im File sollen alle Einträge "Blau" durch "Rot" ersetzt werden!

Könnt ihr mir damit helfen?

Danke
fuxl66
bst
Programmierer


Verfasst am:
11. Sep 2012, 10:18
Rufname: Bernd
Wohnort: Ilsfeld


AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Hi,

warum willst Du das in VBA machen? Dafür gibt es denn M.E. geeignetere Wege z.B. direkt auf der Kommandozeile mit SED (das gibt es auch für Windows). Einfach:

Zitat:
c:\> sed < alt.txt -e "s/Blau/Rot/" > neu.txt

und fertig.

cu, Bernd
--
http://de.wikipedia.org/wiki/Sed_(Unix)
fuxl66
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Sep 2012, 10:29
Rufname:

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Dies wäre natürlich auch meine bevorzugte Variante, jedoch bekomm ich es mit ner Batch Datei nicht hin.

Der Eintrag:
D:\> sed < Alt.txt -e "s/Blau/Rot/" > Neu.txt

liefert mir eine leere Neu.txt ???!?

In der Alt.txt steht als Testumgebung folgendes:
Blau
Grün
Rot
Gelb
Blau
Braun
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
11. Sep 2012, 10:29
Rufname: Hansueli

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Hallo,

z.B. so (nach einer Idee von Nepumuk) :
Code:
Option Explicit

Public Sub ReplaceTxt()

    Dim objFSO As Object, objRegEx As Object
    Dim objTextStram As Object, objFile As Object
    Dim intFilenumber As Integer
    Dim vntText As Variant
    Dim strInp As String
    Dim arrTmp
   
    strInp = "D:\TextDateien\Alt.txt"              ' ggf. anpassen!!!!
    arrTmp = Dir(strInp)
    If arrTmp = "" Then
        MsgBox "Datei " & strInp & " nicht gefunden!", vbCritical, "Fehler Dateiname"
        Exit Sub
    End If
   
    arrTmp = InputBox("Bitte Text VORHER;NACHHER angeben:", "Replace in Datei " & arrTmp, "VORHER;NACHHER")
    arrTmp = Split(arrTmp, ";")
    If UBound(arrTmp) <> 1 Then
        MsgBox "Nichts zu machen!", vbExclamation, "Fehler Eingabe"
        Exit Sub
    End If
       
    intFilenumber = FreeFile
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(strInp)
    Set objTextStram = objFile.OpenAsTextStream(1, 0)
   
    vntText = objTextStram.ReadAll
    objTextStram.Close
   
    Set objRegEx = CreateObject("VBScript.RegExp")
   
    With objRegEx
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
        .Pattern = arrTmp(0)
        vntText = .Replace(vntText, arrTmp(1))
    End With
   
    Open Replace(strInp, "Alt", "Neu") For Output As #intFilenumber
    Print #intFilenumber, vntText
    Close #intFilenumber
    MsgBox arrTmp(0) & " wurde ersetzt durch " & arrTmp(1) & vbCrLf & _
          "in der Datei " & strInp, vbInformation, "Text ersetzen"
End Sub
Gruess Hansueli
_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
fuxl66
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Sep 2012, 10:43
Rufname:


AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

das funktioniert schon mal.
Wie kann man nun die manuelle Eingabe raus nehmen und fix durch "Blau" "Rot" ersetzen? Es soll automatisiert ablaufen ohne usereingabe!

Weiters würde ich gerne eine *.vbs Datei erzeugen die ich dann in meine Batch Datei integrieren kann.
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
11. Sep 2012, 10:59
Rufname: Hansueli

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Hallo,

'Automatisch' aber 'statisch!'
Code:
Public Sub ReplaceTxt()

    Dim objFSO As Object, objRegEx As Object
    Dim objTextStram As Object, objFile As Object
    Dim intFilenumber As Integer
    Dim vntText As Variant
    Dim strInp As String
    Dim arrTmp
   
    strInp = "D:\TextDateien\Alt.txt"              ' ggf. anpassen!!!!
    arrTmp = Array("Blau""Rot")
       
    intFilenumber = FreeFile
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile(strInp)
    Set objTextStram = objFile.OpenAsTextStream(1, 0)
   
    vntText = objTextStram.ReadAll
    objTextStram.Close
   
    Set objRegEx = CreateObject("VBScript.RegExp")
   
    With objRegEx
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
        .Pattern = arrTmp(0)
        vntText = .Replace(vntText, arrTmp(1))
    End With
   
    Open Replace(strInp, "Alt", "Neu") For Output As #intFilenumber
    Print #intFilenumber, vntText
    Close #intFilenumber
End Sub

Zitat:
Weiters würde ich gerne eine *.vbs Datei erzeugen die ich dann in meine Batch Datei integrieren kann.
Wir sind hier in einem XL-Forum, schau dich halt in einem VBS-Forum um!

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
Phelan XLPH
Fortgeschritten


Verfasst am:
11. Sep 2012, 11:12
Rufname: Phelan

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

oder so:

Code:
Public Sub ReplaceTxt()

    Dim intFilenumber As Integer
    Dim vntText As Variant
    Dim strInp As String
    Dim vTmp, Ms As Object
   
    strInp = "D:\Test\z321.txt"              ' ggf. anpassen!!!!
    vTmp = Array("Blau", "Rot")
   
    intFilenumber = FreeFile
    Open strInp For Input As #intFilenumber
    vntText = Input(LOF(intFilenumber), #intFilenumber)
    Close #intFilenumber
   
    With CreateObject("VBScript.RegExp")
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
        .Pattern = vTmp(0)
        Set Ms = .Execute(vntText)
        vntText = .Replace(vntText, vTmp(1))
    End With
   
    If Ms.Count Then
        strInp = Replace(strInp, Dir(strInp), Replace(Dir(strInp), ".", "Neu."))
       
        intFilenumber = FreeFile
        Open strInp For Output As #intFilenumber
        Print #intFilenumber, vntText
        Close #intFilenumber
    Else
        MsgBox "Nix zm Ersetzen gefunden!"
    End If
   
End Sub
bst
Programmierer


Verfasst am:
11. Sep 2012, 11:13
Rufname: Bernd
Wohnort: Ilsfeld

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Auch nochmals Hallo,

Zitat:
Dies wäre natürlich auch meine bevorzugte Variante, jedoch bekomm ich es mit ner Batch Datei nicht hin.

Der Eintrag:
D:\> sed < Alt.txt -e "s/Blau/Rot/" > Neu.txt

liefert mir eine leere Neu.txt ???!?


- Liegt alt.txt auch in d:\ ?

- was liefert denn sed --version sowie sed --help bzw. sed -?

- Versuche vielleicht auch mal:

Code:
D:\> sed "s/Blau/Rot/" Alt.txt > Neu.txt


Hier funktionieren übrigens beide Varianten mit zwei unterschiedlichen GNU sed Versionen.

cu, Bernd
Eierlein
Gast


Verfasst am:
11. Sep 2012, 14:54
Rufname:

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Und hier eine vbs Version:

Code:

'Test.vbs

Option explicit
Dim fso, f, text
Const ForInput = 1, ForOutput = 2

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("d:\##\a.txt", ForInput)
Text =   f.ReadAll
text = Replace(text, "Blau", "Rot")
f.close

Set f = fso.OpenTextFile("d:\##\b.txt", ForOutput, True)
f.Write(text)
f.Close
fuxl66
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Sep 2012, 15:11
Rufname:

Re: AW: Text via VBA in Textdatei (txt) suchen und ersetzen - Re: AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Eierlein - 11. Sep 2012, 14:54 hat folgendes geschrieben:
Und hier eine vbs Version:

Code:

'Test.vbs

Option explicit
Dim fso, f, text
Const ForInput = 1, ForOutput = 2

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("d:\##\a.txt", ForInput)
Text =   f.ReadAll
text = Replace(text, "Blau", "Rot")
f.close

Set f = fso.OpenTextFile("d:\##\b.txt", ForOutput, True)
f.Write(text)
f.Close


Perfekt. Genau so funktioniert das wie ich mir das vorgestellt habe. DANKE.
Eierlein
Gast


Verfasst am:
11. Sep 2012, 15:18
Rufname:

AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Und das ohne Regex- Idea
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
11. Sep 2012, 15:25
Rufname: Hansueli


AW: Text via VBA in Textdatei (txt) suchen und ersetzen - AW: Text via VBA in Textdatei (txt) suchen und ersetzen

Nach oben
       Version: Office 2010

Hallo,

Zitat:
Und das ohne Regex-...

Booaahh. Regex wurde in meinem Vorschlag eingesetzt, da es einfachere Anpassungen an Gross/Kleinschreibung oder Like Operatoren möglich macht.
Replace ist stur und Case-Sensitiv! Sad

Aber wichtig ist ja, das des Anfragers Problem gelöst ist. Very Happy

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Zellen die Text enthalten vergleichen? 2 HeikeFfm 1419 03. Mai 2005, 16:39
HeikeFfm Zellen die Text enthalten vergleichen?
Keine neuen Beiträge Excel Formeln: Zahl mit Zahl ersetzen und mit der Formel Multiplizieren??? 7 Iggy 912 14. Apr 2005, 21:53
ae Zahl mit Zahl ersetzen und mit der Formel Multiplizieren???
Keine neuen Beiträge Excel Formeln: Text aus Zelle (Tabellenblattname) als Formelbestandteil ? 4 Sid 2003 03. März 2005, 17:28
Gast Text aus Zelle (Tabellenblattname) als Formelbestandteil ?
Keine neuen Beiträge Excel Formeln: Zahl durch Wort ersetzen. 1 Carrear 3152 23. Feb 2005, 15:46
ae Zahl durch Wort ersetzen.
Keine neuen Beiträge Excel Formeln: SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN 6 janine071108 3121 21. Feb 2005, 17:55
Arnim SVERWEIS - NACH 2 KRITERIEN GLEICHZEITIG SUCHEN
Keine neuen Beiträge Excel Formeln: Text von Tabelle1 auch in Tabelle 2 kopieren 7 Pinguin1977 2848 30. Jan 2005, 16:56
Pinguin1977 Text von Tabelle1 auch in Tabelle 2 kopieren
Keine neuen Beiträge Excel Formeln: Einzelne Wörter löschen (ersetzen/formel) 2 Michi_wien 4587 29. Jan 2005, 12:33
Gast Einzelne Wörter löschen (ersetzen/formel)
Keine neuen Beiträge Excel Formeln: Erst Spalte dann wert suchen zeile ausgeben 2 Kai2k 3055 07. Jan 2005, 12:10
Kai2k Erst Spalte dann wert suchen zeile ausgeben
Keine neuen Beiträge Excel Formeln: Excel Formel Zahlen von Text trennen 2 Hauke81 2948 29. Nov 2004, 16:32
derschroe Excel Formel Zahlen von Text trennen
Keine neuen Beiträge Excel Formeln: Suchen eines Wertes in einer Zeile 1 AxelChris 1731 25. Nov 2004, 17:25
Patrick0705 Suchen eines Wertes in einer Zeile
Keine neuen Beiträge Excel Formeln: Formel als Text in Nachbarzelle kopieren 6 blauvogel 1129 19. Okt 2004, 16:54
blauvogel Formel als Text in Nachbarzelle kopieren
Keine neuen Beiträge Excel Formeln: Funktion TEXT 5 Gast 1702 04. Okt 2004, 14:05
Thomas Ramel Funktion TEXT
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Dreamweaver Forum