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

Txt Import Problem

Txt Import Problem
24.04.2022 13:21:39
Beat
Guten Tag
Ich bin etwas ratlos und brauche Hilfe.
Ich habe eine Txt Date mit Semikolon getrennt welche ich in ein Excel importieren möchte zwecks Bearbeitung.
File liegt hier:https://www.herber.de/bbs/user/152623.zip
Nun eigentlich klappt das importieren auch nur habe ich ein Problem:
es sin Nummern und Zeiten und da ist mein Problem
die Zeiten werden wohl als Zahl importiert! Mein Format wäre [H]mm:ss,0
z.B 59:50,7 --> in Zelle steht zwar 00:59:59,7
dann 1:01:12,8 an gezeigt wird 01:12,8 in der Zelle steht aber 1:01:12,8
wenn ich das ganze dann wieder als Text File exportiere steht da was von 4.29226851851852E-02 irgendwas also Zahl
Wie kann ich das nun Korrekt importieren kann mir jemand helfen Bitte

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Txt Import Problem
24.04.2022 13:57:42
Alwin
Hallo,
die Übernahme aus dem txt file in die Exceltabelle entspricht dem Text aus dem txt File.
Beispiel:
Wert aus txt File:
1;00:42:42.23;;1;;
Wert in excel Tabelle
1 00:42:42.23 leer 1
dein gewünschter Wert ?
1 00:42:42,2 leer 1
richtig so?
Gruß Uwe

CSV Import Problem
24.04.2022 14:07:32
Beat
Korrekt die Werte sollten aus der Text Datei übernommen werden.
1 00:42:42.23 leer 1 bei meiner Lösung wird zwar der Wert so importiert angezeigt wird aber nur 1 42:42.23 leer 1 und ich vermute das die Zeit als Zahl importiert wird somit beim Export 4.29226851851852E-02 erhalte.
Nun wie kann ich das Korrekt als Zeit importieren?
Anzeige
AW: CSV Import Problem
24.04.2022 15:04:47
Alwin
dein Verdacht ist nicht richtig. So wie oben beschrieben ist das Text und kein Datums- (Zeit) wert. Reicht die Ausgabe in der Spalte im Textformat, kann man die Kommastelle mitgeben. Die Umwandlung in Textformat der Spalte B wäre so:

Sub TestDurchlaufB()
Dim ZZeit As String, ZRest As String, i As Long
With cmd_Import_Lauf
For i = 5 To .Cells(Rows.Count, 2).End(xlUp).Row
ZZeit = CDate(Left(.Cells(i, 2), 8))
ZRest = Right(.Cells(i, 2), 2)
ZZeit = ZZeit & "," & Left(ZRest, 1)
.Cells(i, 2) = ZZeit
Next i
End With
End Sub
muss es ein Datumsformat mit Kommastelle sein und damit es als solches von Excel erkannt wird so:

Sub TestDurchlaufBKomma()
Dim ZZeit As String, ZRest As String, i As Long
With cmd_Import_Lauf
For i = 5 To .Cells(Rows.Count, 2).End(xlUp).Row
ZZeit = CDate(Left(.Cells(i, 2), 8))
ZRest = Right(.Cells(i, 2), 2)
.Cells(i, 2) = CDate(ZZeit) & "." & ZRest
.Cells(i, 2).NumberFormat = "hh:mm:ss.0"
Next i
End With
End Sub
Die 2. Variante vermute ich, soll es wohl sein,
Gruß Uwe
Anzeige
AW: Txt Import Problem
24.04.2022 14:36:06
Nepumuk
Hallo Beat,
füge folgende Zeile als letzte in dein Makro ein:

Call Columns(1).TextToColumns(Destination:=Range("A1"), DataType:=xlDelimited, _
ConsecutiveDelimiter:=False, Semicolon:=True, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)))
Gruß
Nepumuk
CSV Import Problem
24.04.2022 14:45:29
Beat
Danke Nepumuk
Habe ich das so richtig verstanden?
Set wks = ActiveSheet
Workbooks.OpenText Filename:=OpenFile(Counter), Tab:=False, Semicolon:=True, comma:=False, Space:=False, other:=False
ActiveSheet.UsedRange.Copy wks.Range("A" & LastRow_1)
ActiveWorkbook.Close savechanges:=False
Next Counter
'notwendig, da während der Schleife beim ersten Durchlauf
'an der Stelle LastRow_1 = LastRow + 1 in Zeile 2 begonnen wird und somit
'Zeile 1 leer bleibt.
wks.Rows("1:1").Delete
wks.Range("A1").Select
Call Columns(1).TextToColumns(Destination:=Range("A1"), DataType:=xlDelimited, _
ConsecutiveDelimiter:=False, Semicolon:=True, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)))
End Sub
Kriege trotzdem noch folgende Werte oder habe ich das falsch verstanden?
247 59:52.8 77 17:10.6
233 59:55.1 78 17:12.8
88 00:06.6 79 17:24.4
Anzeige
AW: CSV Import Problem
24.04.2022 14:52:25
Nepumuk
Hallo Beat,
bei mir sieht das so aus:
 ABCDEF
12. Sensler Frühlingslauf Kat 15 - 31     
2Klassement des 2 Laufes     
3      
4Nr.Ziel ZeitName und VornamePlatzKategorieAbstand
5100:42:42.23 1  
6200:43:06.25 2 00:00:24.02
746300:43:39.21 3 00:00:56.98
847600:43:58.97 4 00:01:16.74

Ist das nicht richtig?
Gruß
Nepumuk
Anzeige
CSV Import Problem
24.04.2022 14:55:14
Beat
Hallo Nepumuk
Doch das wäre mein Ziel aber bei mir sieht es leider nicht so aus.
Kannst Du mir Bitte deinen Code posten?
Wäre super danke
Gruss Beat
CSV Import Problem
24.04.2022 14:57:02
Beat
Hallo Nepumuk
Doch das wäre mein Ziel aber bei mir sieht es leider nicht so aus.
Kannst Du mir Bitte deinen Code posten?
Wäre super danke
Gruss Beat
AW: CSV Import Problem
24.04.2022 15:06:27
Nepumuk
Hallo Beat,
bitteschön:

Sub TextImport()
Dim Counter As Integer
Dim LastRow As Long
Dim LastRow_1 As Long
Dim OpenFile As Variant
Dim wks As Worksheet
'bevor importiert wird, werden alle vorherigen Werte gelöscht
ActiveSheet.Cells.Delete
'Datei öffnen Dialog, voreingestellt auf nur Textdateien
OpenFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt", , , , True)
'For-Schleife, beginnend bei 1 endend bei max. Zahl der Dateien in Variable OpenFile
For Counter = 1 To UBound(OpenFile)
'Ausschalten der Bildschirmaktualisierung
Application.ScreenUpdating = False
'Überprüfung ob letzte Zelle in Spalte A leer ist
If IsEmpty(Cells(65536, 1)) Then
'Es wird in der Folge solange nach oben gegangen,
'bis ein Inhalt in einer Zelle gefunden wird
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Die Fundstelle wird in einer Messagebox ausgegeben
' MsgBox "Letzter Eintrag in Zeile: " & LastRow
'und in eine Variable Namens LastRow_1 geschrieben und 1 addiert
'um die nächste freie Zelle anzugeben
LastRow_1 = LastRow + 1
Else
'wenn die letzte Zelle belegt ist, erfolgt eine Info
'und das Ende des Programms
MsgBox "Die letzte Zelle ist nicht leer!", vbCritical, "Bitte beachten!"
End If
Set wks = ActiveSheet
Workbooks.Open Filename:=OpenFile(Counter)
ActiveSheet.UsedRange.Copy wks.Range("A" & LastRow_1)
ActiveWorkbook.Close savechanges:=False
Next Counter
'notwendig, da während der Schleife beim ersten Durchlauf
'an der Stelle LastRow_1 = LastRow + 1 in Zeile 2 begonnen wird und somit
'Zeile 1 leer bleibt.
wks.Rows("1:1").Delete
wks.Range("A1").Select
Call Columns(1).TextToColumns(Destination:=Range("A1"), DataType:=xlDelimited, _
ConsecutiveDelimiter:=False, Semicolon:=True, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)))
End Sub
Gruß
Nepumuk
Anzeige
CSV Import Problem
24.04.2022 15:17:52
Beat
Super Nepumuk
herzlichen Dank
Das mit dem Import klappt nun.
Darf ich noch was Fragen? Der Export ergibt aber immer noch Zahlen, nicht mein gewünschtes Zeit Format gibt's hierfür auch eine Lösung?
2. Sensler Frühlingslauf Kat 15 - 31;
Klassement des 2 Laufes;
Nr.;Ziel Zeit;Name und Vorname;Platz;Kategorie;Abstand;
1;2.96554398148148E-02;1;
2;2.99334490740741E-02;2;2.78009259259259E-04;
463;3.03149305555556E-02;3;6.59490740740741E-04;
476;3.05436342592593E-02;4;8.88194444444444E-04;
4;3.07033564814815E-02;5;1.04791666666667E-03;
3;3.10856481481482E-02;6;1.43020833333333E-03;
Sorry bin noch Abfänger ;-)
Gruss Beat
Anzeige
AW: CSV Import Problem
24.04.2022 16:04:46
Nepumuk
Hallo Beat,
das funktioniert mit der TextToColumns-Methode nicht. Da muss ich die Textdatei zeilenweise einlesen.
Teste mal:

Sub TextImport2()
Dim Counter As Integer
Dim LastRow As Long
Dim LastRow_1 As Long
Dim OpenFile As Variant
Dim intFileNumber As Integer
Dim strText As String
Dim avntTemp As Variant, avntOutput() As Variant
Dim lngRow As Long, ialngIndex As Long
Dim dtmTime As Date
'bevor importiert wird, werden alle vorherigen Werte gelöscht
ActiveSheet.Cells.Delete
'Datei öffnen Dialog, voreingestellt auf nur Textdateien
OpenFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt", , , , True)
'For-Schleife, beginnend bei 1 endend bei max. Zahl der Dateien in Variable OpenFile
For Counter = 1 To UBound(OpenFile)
'Ausschalten der Bildschirmaktualisierung
Application.ScreenUpdating = False
'Überprüfung ob letzte Zelle in Spalte A leer ist
If IsEmpty(Cells(65536, 1)) Then
'Es wird in der Folge solange nach oben gegangen,
'bis ein Inhalt in einer Zelle gefunden wird
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Die Fundstelle wird in einer Messagebox ausgegeben
' MsgBox "Letzter Eintrag in Zeile: " & LastRow
'und in eine Variable Namens LastRow_1 geschrieben und 1 addiert
'um die nächste freie Zelle anzugeben
LastRow_1 = LastRow + 1
Else
'wenn die letzte Zelle belegt ist, erfolgt eine Info
'und das Ende des Programms
MsgBox "Die letzte Zelle ist nicht leer!", vbCritical, "Bitte beachten!"
End If
Call Reset
intFileNumber = FreeFile
Open OpenFile(Counter) For Input As #intFileNumber
Do Until EOF(intFileNumber)
Line Input #intFileNumber, strText
avntTemp = Split(strText, ";")
If IsNumeric(avntTemp(0)) Then
ReDim avntOutput(UBound(avntTemp))
For ialngIndex = LBound(avntTemp) To UBound(avntTemp)
If IsNumeric(avntTemp(ialngIndex)) Then
If Val(avntTemp(ialngIndex)) 
Gruß
Nepumuk
Anzeige
CSV Import Problem
24.04.2022 16:46:13
Beat
Hallo Nepumuk
Danke für deine Hilfe
Bei
If IsNumeric(avntTemp(0)) Then kriege ich einen Fehler
Laufzeitfehler 9 sowas Index ausserhalb des gültigen Bereichs
schon mal Danke
AW: CSV Import Problem
24.04.2022 16:56:19
Nepumuk
Hallo Beat,
du hast eine Leerzeile in der Textdatei. Dann so:

Sub TextImport2()
Dim Counter As Integer
Dim LastRow As Long
Dim LastRow_1 As Long
Dim OpenFile As Variant
Dim intFileNumber As Integer
Dim strText As String
Dim avntTemp As Variant, avntOutput() As Variant
Dim lngRow As Long, ialngIndex As Long
Dim dtmTime As Date
'bevor importiert wird, werden alle vorherigen Werte gelöscht
ActiveSheet.Cells.Delete
'Datei öffnen Dialog, voreingestellt auf nur Textdateien
OpenFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt", , , , True)
'For-Schleife, beginnend bei 1 endend bei max. Zahl der Dateien in Variable OpenFile
For Counter = 1 To UBound(OpenFile)
'Ausschalten der Bildschirmaktualisierung
Application.ScreenUpdating = False
'Überprüfung ob letzte Zelle in Spalte A leer ist
If IsEmpty(Cells(65536, 1)) Then
'Es wird in der Folge solange nach oben gegangen,
'bis ein Inhalt in einer Zelle gefunden wird
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Die Fundstelle wird in einer Messagebox ausgegeben
' MsgBox "Letzter Eintrag in Zeile: " & LastRow
'und in eine Variable Namens LastRow_1 geschrieben und 1 addiert
'um die nächste freie Zelle anzugeben
LastRow_1 = LastRow + 1
Else
'wenn die letzte Zelle belegt ist, erfolgt eine Info
'und das Ende des Programms
MsgBox "Die letzte Zelle ist nicht leer!", vbCritical, "Bitte beachten!"
End If
Call Reset
intFileNumber = FreeFile
Open OpenFile(Counter) For Input As #intFileNumber
Do Until EOF(intFileNumber)
Line Input #intFileNumber, strText
If strText = vbNullString Then
lngRow = lngRow + 1
Else
avntTemp = Split(strText, ";")
If IsNumeric(avntTemp(0)) Then
ReDim avntOutput(UBound(avntTemp))
For ialngIndex = LBound(avntTemp) To UBound(avntTemp)
If IsNumeric(avntTemp(ialngIndex)) Then
If Val(avntTemp(ialngIndex)) 
Gruß
Nepumuk
Anzeige
CSV Import Problem
24.04.2022 17:05:17
Beat
Hallo Nepumuk
Wauw das sieht kompliziert aus ;-)
Ja jetzt funktioniert der Import. (Schönheitsfehler der Rang würde jetzt auch als Zeit dargestellt könnte ich aber Leben damit)
Export bekomme ich jetzt eine Chinesische Text Datei ;-)
Ich denke dann mache ich es wieder manuell wie vorher. Da klappte der Export muss halt die Text Datei manuel per drag n drop einfügen und manuel formatieren wollte das etwas automatisieren, scheint aber nicht ganz einfach zu sein.
AW: Txt Import Problem
24.04.2022 16:21:31
snb
Ich verwende:

Sub M_snb()
With Sheets.Add(, Sheets(Sheets.Count), , "G:\OF\lauf11.txt")
.Columns(1).Replace ".", ","
.Columns(1).TextToColumns , , , , 0, 1, 0, 0, 0, 0
.Columns(2).NumberFormat = "mm:ss.00"
.Columns(5).NumberFormat = "mm:ss.00"
End With
End Sub

Anzeige
CSV Import Problem
24.04.2022 19:12:29
Beat
Hallo Snb
Danke für deine Lösung habe die erst jetzt bemerkt.
Funktioniert eigentlich so wie ich das möchte.
Kann man das aber noch etwas genereller machen das heisst ich möchte nicht immer Lauf11.txt importieren und das Text File liegt auch nicht immer am gleichen Ort.
Und ausser dem sollte keine neue Mappe hinzugefügt werden sondern in diese die werte eingefügt.
Kannst du mir noch helfen?
CSV Import Problem
24.04.2022 19:49:58
Beat
Hallo Snb
Danke für deine Lösung habe die erst jetzt bemerkt.
Funktioniert eigentlich so wie ich das möchte.
Kann man das aber noch etwas genereller machen das heisst ich möchte nicht immer Lauf11.txt importieren und das Text File liegt auch nicht immer am gleichen Ort.
Und ausser dem sollte keine neue Mappe hinzugefügt werden sondern in diese die werte eingefügt.
Kannst du mir noch helfen?
AW: CSV Import Problem
24.04.2022 23:14:06
snb

Sub M_snb()
With Application.FileDialog(3)
.InitialFileName = "G:\OF\*.txt"
If .Show Then
With Sheets.Add(, Sheets(Sheets.Count), , .SelectedItems(1))
.Columns(1).Replace ".", ","
.Columns(1).TextToColumns , , , , 0, 1, 0, 0, 0, 0
.Columns(2).NumberFormat = "mm:ss.00"
.Columns(5).NumberFormat = "mm:ss.00"
End With
End If
End With
End Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige