Ersetzen nur zwischen bestimmter String Marken
12.09.2006 16:14:31
Martin
Damit ich eine xml Datei welche sehr gross ist automatisch mit Standardwerten angleichen kann habe ich aus dem Forum den folgenden Script gefunden. Das Ersetzen würde natürlich bestens funktionieren, aber es soll immer nur zwischen zwei eindeutig bestimmten Markierungen angewendet werden und nicht generell auf alle identischen Strings weil sonst zuviel verändert wird.
z.B.
Suchen nach:
"forecast-adjustment"
hier jede zeile ersetzen bis zum String
"/forecast-adjustment"
jetzt nicht mehr ersetzen bis zum nächsten
"forecast-adjustment"
Und so weiter.
Hier das Script:
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