Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeichenkette in Textdatei suchen & ersetzen

Zeichenkette in Textdatei suchen & ersetzen
CaseII
Hallo Leute,
habe hier folgenden Code gefunden jedoch müsste es abgeändert werden damit der Text in B2 auch bei Leer- oder Sonderzeichen die Zeichenfolge ersetzt. Wenn z.B. nur Marker15 in B2 steht schreibt das Makro die neue Zeichenfolge in B3 immer wieder dazu und löscht es nicht.
In B2 steht: Marker15 KFZ Haus Bank Geschäft
In B3 steht: Marker15 KFZ Firma Haus Schiff
In der Textdatei steht irgendwo: Marker15 Auto Bau Straße;Meer
Nun soll die komplette Zeichenfolge (kompl. Zeile) in der Textdatei durch den Inhalt in B3 ersetzt werden.
Habe das nicht hinbekommen.
Danke vorab!
Grüße CaseII
Code:
Sub SubstituteSave()
Dim arr() As String
Dim iCounter As Integer
Dim sSource As String, sTarget As String, sTxtA As String
Dim sTxtB As String, sTxt As String, sPath As String
sPath = ThisWorkbook.Path & "\"
sSource = sPath & Range("b1").Value     ' Name der Textdatei
sTarget = sPath & Range("b4").Value     ' Neuer Name der Textdatei
sTxtA = Range("b2").Value               ' alter Text
sTxtB = Range("b3").Value               ' neuer Text
Close
Open sSource For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
If InStr(sTxt, sTxtA) Then
sTxt = Replace(sTxt, sTxtA, sTxtB)
End If
iCounter = iCounter + 1
ReDim Preserve arr(1 To iCounter)
arr(iCounter) = sTxt
Loop
Close
Open sTarget For Output As #1
For iCounter = 1 To UBound(arr)
Print #1, arr(iCounter)
Next iCounter
Close
On Error GoTo ERRORHANDLER
Shell "notepad " & sTarget, vbMaximizedFocus
Exit Sub
ERRORHANDLER:
MsgBox " Job erledigt!"
End Sub

AW: Zeichenkette in Textdatei suchen & ersetzen
07.03.2011 07:27:57
ing.grohn
Hallo Casell,
vielleicht reicht es aus, am Ende des Suchtextes ein ALT RETURN anzufügen und die Zeile durch NCHTS zu ersetzen (Du willst die komplette Zeile LOESCHEN!!?)
Mit freundlichen Grüßen
Albrecht
AW: Zeichenkette in Textdatei suchen & ersetzen
07.03.2011 08:46:02
ing.grohn
Hallo CaseII
hast Du Dich im Text irgendwo verschrieben?
Mit freundlichen Grüßen
Albrecht
AW: Zeichenkette in Textdatei suchen & ersetzen
07.03.2011 17:29:45
CaseII
Hallo Albrecht,
nicht das ich wüsste.
Wenn das Wort Marker15 gefunden wird soll die dann folgende Zeichenkette durch B3 ersetzt werden.
Grüße
CaseII
AW: Zeichenkette in Textdatei suchen & ersetzen
08.03.2011 17:17:26
ing.grohn
Hallo CaseII,
Du möchtest den Suchbegriff finden aber nicht diesen Begriff, sondern die darauf folgende Zeile durch B3 ersetzen?
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: Zeichenkette in Textdatei suchen & ersetzen
08.03.2011 20:25:21
CaseII
Hallo Albrecht,
Begriff nicht finden? Verstehe nicht ganz, aber das mit der folgenden Zeichenkette ist so richtig wie Du geschrieben hast.
Grüße
CaseII
AW: Zeichenkette in Textdatei suchen & ersetzen
09.03.2011 07:27:36
ing.grohn
Hallo CaseII,
probier mal:
Sub SubstituteSave()
Dim arr() As String
Dim iCounter As Integer
Dim sSource As String, sTarget As String, sTxtA As String
Dim sTxtB As String, sTxt As String, sPath As String
Dim gefunden As Boolean
Dim Satz As Integer
sPath = ThisWorkbook.Path & "\"         '"C:\excel\"
sSource = sPath & Range("b1").Value     ' Name der Textdatei
sTarget = sPath & Range("b4").Value     ' Neuer Name der Textdatei
sTxtA = Range("b2").Value               ' alter Text
sTxtB = Range("b3").Value               ' neuer Text
Close
gefunden = False
Open sSource For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
If InStr(sTxt, sTxtA) Then
' sTxt = Replace(sTxt, sTxtA, sTxtB)
gefunden = True
Satz = iCounter + 1
End If
If gefunden And Satz = iCounter Then
gefunden = False 'nichts
Else
iCounter = iCounter + 1
ReDim Preserve arr(1 To iCounter)
arr(iCounter) = sTxt
End If
Loop
Close
Open sTarget For Output As #1
For iCounter = 1 To UBound(arr)
Print #1, arr(iCounter)
Next iCounter
Close
On Error GoTo ERRORHANDLER
Shell "notepad " & sTarget, vbMaximizedFocus
Exit Sub
ERRORHANDLER:
MsgBox " Job erledigt!"
End Sub

Mit freundlichen Grüßen
Albrecht
Anzeige
AW: Zeichenkette in Textdatei suchen & ersetzen
09.03.2011 08:01:18
Reinhard
Hallo Albrecht,
  Do Until EOF(1)
Line Input #1, sTxt
If InStr(sTxt, sTxtA) Then
gefunden = True
Satz = iCounter + 1
End If
If gefunden And Satz = iCounter Then
gefunden = False 'nichts
Else
iCounter = iCounter + 1
ReDim Preserve arr(1 To iCounter)
arr(iCounter) = sTxt
End If
Loop

da ist doch was faul *glaub* Wenn gefunden True wird, so wird Satz = iCounter + 1, d.h., die Abfrage:
If gefunden And Satz = iCounter Then
wird nie erfüllt.
Hab jetzt nur flüchtig geschaut, prüf mal die Stelle bitte.
Option Explicit
Sub SubstituteSave()
Dim arr() As String, iCounter As Integer
Dim sSource As String, sTarget As String, sTxtA As String
Dim sTxtB As String, sTxt As String, sPath As String
Dim gefunden As Boolean, Satz As Integer
sPath = ThisWorkbook.Path & "\"         '"C:\excel\"
sSource = sPath & Range("b1").Value     ' Name der Textdatei
sTarget = sPath & Range("b4").Value     ' Neuer Name der Textdatei
sTxtA = Range("b2").Value               ' alter Text
sTxtB = Range("b3").Value               ' neuer Text
Close
Open sSource For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
If InStr(sTxt, sTxtA) Then
gefunden = True
Satz = iCounter + 1
End If
If gefunden And Satz = iCounter Then
gefunden = False 'nichts
Else
iCounter = iCounter + 1
ReDim Preserve arr(1 To iCounter)
arr(iCounter) = sTxt
End If
Loop
Close
Open sTarget For Output As #1
For iCounter = 1 To UBound(arr)
Print #1, arr(iCounter)
Next iCounter
Close
On Error GoTo ERRORHANDLER
Shell "notepad " & sTarget, vbMaximizedFocus
Exit Sub
ERRORHANDLER:
MsgBox " Job erledigt!"
End Sub

Gruß
Reinhard
Anzeige
AW: Zeichenkette in Textdatei suchen & ersetzen
09.03.2011 09:37:46
ing.grohn
Hallo Reinhard,
ich denke schon, dass das korrekt ist. In dem Moment, wenn Inst den Text findet, wird gefunden =true gesetzt und der Satz auf die übernächste Zeile. Die aktuelle Zeile wird gespeichert un der Folgesatz ausgelassen. (die Erhöhung des Counters erfolgt ja später (siehe Quelltext von CaseII)
Mit freundlichen Grüßen
Albrecht
AW: Zeichenkette in Textdatei suchen & ersetzen
10.03.2011 18:24:27
CaseII
Hallo Albrecht,
habs ausprobiert jedoch funktioniert das nicht.
Der Text "Marker15 KFZ Haus Bank Geschäft" wird nicht durch "Marker15 KFZ Firma Haus Schiff" ersetzt.
Grüße
CaseeII

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige