Hallo Leute,
ich habe in einer TXT-Datei "Daten.txt" z.B. wie folgt Einträge untereinander stehen:
VF_K4_U1_RL_S4_4
VF_K4_U1_RL_S4_1
VF_K4_U1_RL_S4_2
VF_K4_U1_RL_S4_3
Wie bekomme ich diese bitte per VBA sortiert in einem MsgBox angezeigt?
Beste Grüße,
Sergej
suche dir einen beispielcode zum einlesen von txt dateien in excel.
wenn du die daten eingelesen hast, dann entweder in einem Tabellenblatt reinschreiben und dort sortieren oder in einem Array und mittels Sortieralgorythmus. Dafür gibt es auch reichlich Beispiele
Anschliessend den Text häppchenweise in die Messagebox z.b. msgbox Text1 & vbcrlf & Text2 & vbcrlf.... usw.
die messagebox rufst du dann in einer Sub(Makro) auf.
AW: Einträge sortiert auslesen
24.06.2020 21:03:54
volti
Hallo Sergej,
hier mal eine Möglichkeit:
Option Explicit Sub TxtDatenSortiertEinlesen()
Dim sPathname As String, sFilename As String
Dim iff As Integer, i As Integer
Dim sZeile As String, sItems As String
If Dir$(sPathname & sFilename) <> "" Then 'Datei existent?
With CreateObject("System.Collections.SortedList")
Open sPathname & sFilename For Input As #iff 'Datei öffnen
Do While Not EOF(iff)
Line Input #iff, sZeile 'Zeile lesen
If Not .contains(sZeile) Then .Add sZeile, sZeile
Loop
Close #iff 'Datei schließen
For i = 1 To .Count
sItems = sItems & .GetByIndex(i - 1) & vbCrLf 'Element übernehmen
Next i
Else
MsgBox "Die Datei " & sFilename & " existiert nicht!", vbCritical, "Daten einlesen"
End If End Sub
Viele Grüße aus Freigericht Karl-Heinz
Anzeige
AW: Einträge sortiert auslesen
25.06.2020 12:14:13
Sergej
Hallo Karl-Heinz,
es funktioniert (fast) ;-) Vielen herzlichen Dank!
Hier bekomme ich als Ergebnis dies:
VF_K4_U1_RL_S4_1
VF_K4_U1_RL_S4_10
VF_K4_U1_RL_S4_11
VF_K4_U1_RL_S4_2
VF_K4_U1_RL_S4_3
VF_K4_U1_RL_S4_4
VF_K4_U1_RL_S4_5
VF_K4_U1_RL_S4_6
VF_K4_U1_RL_S4_7
VF_K4_U1_RL_S4_8
VF_K4_U1_RL_S4_9
Die Werte werden logischerweise / leider als Text sortiert. Deswegen steht unter ..._1 die ..._10 usw.
Was muss ich bitte im Code ändern, wenn meine TXT-Datei wie folgt heißt "VF_K4_U1_RL_S4.txt" dann würde es mit der Sortierung der Zahlen (s. oben fett dargestellt) funktionieren oder? Der Unterstrich vor dem Zahl hinten ist immer vorhanden.
Beste Grüße,
Sergej
Anzeige
AW: Einträge sortiert auslesen
25.06.2020 12:58:07
volti
Hallo Sergej,
bei Zahlen bis 100 und gleichem Vortext könnte, wenn es um die Zahlensortierung geht, folgende Änderung schon helfen.
Ansonsten ist es nun mal Text. Für eine spezielle Sortierung, wobei Text und Zhal auseinanderdividiert werden muüssen, wird's dann schon aufwendiger.
PS: Was muss ich bitte im Code ändern, wenn meine TXT-Datei wie folgt heißt "VF_K4_U1_RL_S4.txt" dann würde es mit der Sortierung der Zahlen (s. oben fett dargestellt) funktionieren oder?
Diesen Zusammenhang kann ich nicht nachvollziehen. Auch hier würde "VF_K4_U1_RL_S10.txt" ja nach "VF_K4_U1_RL_S1.txt" und von "VF_K4_U1_RL_S4.txt" kommen.
Option Explicit Sub TxtDatenSortiertEinlesen()
Dim sPathname As String, sFilename As String
Dim iff As Integer, i As Integer
Dim sZeile As String, sItems As String, sSort As String
If Dir$(sPathname & sFilename) <> "" Then 'Datei existent?
With CreateObject("System.Collections.SortedList")
Open sPathname & sFilename For Input As #iff 'Datei öffnen
Do While Not EOF(iff)
Line Input #iff, sZeile 'Zeile lesen
sSort = Right$(sZeile, 2) 'Sortierkriterium
If Not .contains(sSort) Then .Add sSort, sZeile 'In Array einfügen
Loop
Close #iff 'Datei schließen
For i = 1 To .Count
sItems = sItems & .GetByIndex(i - 1) & vbCrLf 'Element übernehmen
Next i