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

Einträge sortiert auslesen

Einträge sortiert auslesen
24.06.2020 20:15:58
Sergej
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einträge sortiert auslesen
24.06.2020 20:47:31
ralf_b
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
 
 sPathname = "C:\Users\ffm\Desktop\"
 sFilename = "Daten.txt"
 iff = FreeFile
 
 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
  
    MsgBox sItems, vbInformation, "Daten einlesen"  'Elemente anzeigen
    
  End With
 
 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
 
 sPathname = "C:\Users\voltm\Desktop\"
 sFilename = "Daten.txt"
 iff = FreeFile
 
 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
  
    MsgBox sItems, vbInformation, "Daten einlesen"    'Elemente anzeigen
    
  End With
 
 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 15:55:24
Sergej
Hallo Karl-Heinz,
es funktioniert. Vielen herzlichen Dank!
Beste Grüße,
Sergej

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige