Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
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

Text Datei vor einlesen Bereinigen

Text Datei vor einlesen Bereinigen
28.01.2018 15:09:52
Manic
Hallo Liebe Excel Cracks,
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
()

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text Datei vor einlesen Bereinigen
29.01.2018 10:27:41
ChrisL
Hi
Mal ohne Datenabgleich, nur neu strukturieren:
Sub t()
Dim strPfad As String, strDatei As Variant, lngZeile As Long, lngLine As Long
Dim strTemp As String
'strPfad = "C:\Users\Public\"
strPfad = ThisWorkbook.Path & "\"
lngZeile = 1
strDatei = Application.GetOpenFilename("Textdateien (*.txt*), *.txt*")
If strDatei = False Then
MsgBox "Sie haben keine Datei ausgewählt!", 48, "Keine Datei ausgewählt"
Exit Sub
End If
With Worksheets("Tabelle1")
.Cells.Delete
Open strDatei For Input As #1
Do While Not EOF(1)
Line Input #1, strTemp
lngLine = lngLine + 1
If lngLine 
cu
Chris
Anzeige
AW: Text Datei vor einlesen Bereinigen
29.01.2018 11:04:40
fcs
Hallo Manic,
hier dein Makro mit zusätzlichen Anweisungen um den Inhalt der Textdatei anzupassen bevor er in die Zwischendatei gespeichert wird.
Gruß
Franz
Public Sub WeeklyReport()
Dim Datei1, Zeile, lngz
Dim wks As Worksheet
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
Set wks = ActiveSheet
With wks
'Zeile mit "Object.;" suchen
lngz = .Range("A:A").Find(what:="Object.;", LookIn:=xlValues, _
lookat:=xlPart).Row
Zeile = .UsedRange.Row + .UsedRange.Rows.Count - 1
'Spalte A leere Zeilen löschen
With .Range(.Cells(lngz, 1), .Cells(Zeile, 1).End(xlUp))
If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
For Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row To lngz + 1 Step -1
'prüfen ob Zeile mit 7 Ziffern beginnt
If Not IsNumeric(Left(.Cells(Zeile, 1).Text, 7)) Then
'Zellinhalt in der Zelle oberhalb hinzufügen
.Cells(Zeile - 1, 1).Value = .Cells(Zeile - 1, 1).Text & .Cells(Zeile, 1).Text
'Zellinhalt löschen
.Cells(Zeile, 1).ClearContents
End If
Next
'Spalte A leere Zeilen löschen
With .Range(.Cells(lngz, 1), .Cells(.Rows.Count, 1).End(xlUp))
If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
End With
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

Anzeige
AW: Text Datei vor einlesen Bereinigen
29.01.2018 20:30:09
Manic
Hallo fcs,
dein Makro ist das was ich gesucht habe, es funktioniert super.
Danke und Danke an alle die sich die Zeit für mich genommen haben.
Wenn auch nicht immer alles klappt finde ich es super, das so viele mit helfen wollen ein Problem zu lösen.
Schöne Grüße
Manic

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige