ich möchte gern eine txt-Datei einlesen. Diese weisst aber unerwünschte Zeilenumbrüche auf, die vor dem einlesen bereinigt werden müssen. Mit meinem Makro kann ich die Datei einlesen und auch an der gewünschten Stelle Spliten.
Wie aber kann ich die txt-Datei vorher bereinigen, das diese ohne den unerwünschten Zeilenumbrüchen eingelesen wird. Zur Verdeutlichung habe ich die txt-Datei manuell so bereinigt, das diese korrekt einlesen werden kann, ich weiß also wie sie aussehen muß.
- https://www.herber.de/bbs/user/119339.txt
=>ausgelesene txt-Datei
- https://www.herber.de/bbs/user/119340.txt
=>bereinigte txt-Datei
Die Liste wird auch in regelmäßigen Abständen aktualsiert werden müssen. Wobei sich in der Spalte Object keine Duplicate ergeben werden. Alle Objects die in der Spalte Release Status = Z9_freigegeben aufweisen werden sich nicht mehr ändern.
Bei allen andern Objects können sich Werte in den letzten 4 Spalten und in der Spalte Current Description ändern und müssen aktualisiert werden. Neue Objects sollen am Ende der Liste hinzugügt werden.
Über Eure Hilfe würde ich mich sehr freuen und wäre Euch sehr Dankbar.
Public Sub WeeklyReport()
Dim Datei1, Zeile, lngz
Zeile1 = 1
'file import --------------------------------------------------------
Application.ScreenUpdating = False
Datei1 = Application.GetOpenFilename("Textdateien (*.txt*), *.txt*")
If CStr(Datei1) = CStr(False) Then
MsgBox "Sie haben keine Datei ausgewählt!", 48, "Keine Datei ausgewählt"
Exit Sub
End If
Workbooks.OpenText Filename:=Datei1, DataType:=xlDelimited
Open "C:\Users\Public\zwsp.txt" For Output As #1
With ActiveSheet
Print #1, _
Join(WorksheetFunction.Transpose(.Range(.Cells(1, 1), _
.Cells(Rows.Count, 1).End(xlUp))), vbCrLf)
End With
Close #1
ActiveWorkbook.Close savechanges:=False
Open "C:\Users\Public\zwsp.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, tmp
ActiveSheet.Cells(Zeile1, 1) = Replace(tmp, "; ", "#")
Zeile1 = Zeile1 + 1
Loop
Close #1
For lngz = 1 To Zeile1 + 1
txt = Split(Cells(lngz, 1), "#")
For y = 0 To UBound(txt)
Cells(lngz, y + 1) = txt(y)
Next
Next
Rows("1:5").Delete
'------------------ Leerzeichen entfernen -----------------------
On Error Resume Next
Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
Zelle.Value = WorksheetFunction.Trim(Zelle.Value)
Next Zelle
On Error GoTo 0
End Sub
()