Hallo
In dieser Variante wird der Bindestrich nach dem Doppelpunkt ersetzt
Sub Read_Extern_File_and_Replace_Signs()
'(C) Ramses
Dim i As Long, n As Integer, findFirst As Boolean
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim txtlines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim textArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\Demo.htm"
findFirst = False
findLast = False
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
txtlines = 0
Do While Not EOF(1) ' Schleife bis Dateiende.
Input #1, Text1 ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1 ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim textArr(txtlines)
'Einlesen der Dateien in das Array
For i = 1 To txtlines
'Zeile einlesen
Line Input #1, textArr(i)
'temporär übergeben
tempStr = textArr(i)
'Schleife um zu ersetzende Zeichen im String zu suchen
For n = 1 To Len(tempStr)
'zuerst wird der Doppelpunkt identifiziert
If Mid(tempStr, n, 1) = ":" Then
If findFirst = False Then
findFirst = True
End If
'Wenn der Doppelpunkt gefunden wurde
'dann wird der Bindestrich nach dem Doppelpunkt ersetzt
ElseIf Mid(tempStr, n, 1) = "-" Then
If findFirst = True Then
tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, " ")
findFirst = False
Exit For
End If
End If
Next n
findFirst = False
'Der korrigierte String wird wieder in das array zurückgeschrieben
textArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To txtlines
'Array an die jeweilige Zeile zurückschreiben
Print #1, textArr(i)
Next i
'Schliessen
Close #1
MsgBox "Alle ""-""-Zeichen sollten ersetzt sein :-))"
End Sub
Sollten auch noch mehr Doppelpunkte vorhanden sein, steige ich aus.
Ohne vernünftige Struktur ist da nix zu machen.
Gruss Rainer