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

Textdatei aufteilen

Textdatei aufteilen
28.02.2023 14:31:31
Antonio
Hallo liebe Gemeinde,
ist es Möglich eine Textdatei auf zwei Listbox aufzuteilen?
https://www.herber.de/bbs/user/158058.txt
Gibt es bei der Textdatei auch Spalten die man definieren kann?
Im Moment lade ich hiermit alles in einer Listbox,
Dim avntValue As Variant        'Textdatei in Listbox1
    Dim ialngIndex As Long
    Dim sFile As String
    Dim strTemp As String
    Dim sDatei As String, sData As String
    Dim iZeile As Long, iSpalte As Integer
    Dim lz As Long
    sDatei = Trim$(Replace(Split(tblXML.Range("A1"), " für")(0), "'", ""))
    sDatei = Environ$("USERPROFILE") & "\Desktop\Songsammlung\" & sDatei & "_DATEN" & ".txt"
    Open sDatei For Input As #1
    With ListBox1
        Call .Clear
        Do Until EOF(1)
            Line Input #1, strTemp
            avntValue = Split(strTemp, vbTab)
            Call .AddItem
            For ialngIndex = LBound(avntValue) To UBound(avntValue)
                .List(.ListCount - 1, ialngIndex) = avntValue(ialngIndex)
            Next
        Loop
    End With
    Close #1

brauche aber die erste Spalte der Textdatei in Listbox 1
und der Rest in Listbox 2
Bin dankbar für alle Tipps.
LG Antonio

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei aufteilen
28.02.2023 15:10:19
Nepumuk
Hallo Antonio,
teste mal:
    Dim avntValue As Variant        'Textdatei in Listbox1
    Dim ialngIndex As Long
    Dim sFile As String
    Dim strTemp As String
    Dim sDatei As String, sData As String
    Dim iZeile As Long, iSpalte As Integer
    Dim lz As Long
    sDatei = Trim$(Replace(Split(tblXML.Range("A1"), " für")(0), "'", ""))
    sDatei = Environ$("USERPROFILE") & "\Desktop\Songsammlung\" & sDatei & "_DATEN" & ".txt"
    Open sDatei For Input As #1
    Call ListBox2.Clear
    With ListBox1
        Call .Clear
        Do Until EOF(1)
            Line Input #1, strTemp
            avntValue = Split(strTemp, vbTab)
            Call .AddItem(avntValue(LBound(avntValue)))
            Call ListBox2.AddItem
            For ialngIndex = LBound(avntValue) + 1 To UBound(avntValue)
                ListBox2.List(.ListCount - 1, ialngIndex - 1) = avntValue(ialngIndex)
            Next
        Loop
    End With
    Close #1
Gruß
Nepumuk
Anzeige
AW: Textdatei aufteilen
28.02.2023 15:30:15
Antonio
Hallo Nepumuk,
danke für die Rückmeldung,
habe den Code eingesetzt, sorry für die Listbox benennung, habe so geändert:
 Dim avntValue As Variant        'Textdatei in Listbox1
    Dim ialngIndex As Long
    Dim sFile As String
    Dim strTemp As String
    Dim sDatei As String, sData As String
    Dim iZeile As Long, iSpalte As Integer
    Dim lz As Long
    sDatei = Trim$(Replace(Split(tblXML.Range("A1"), " für")(0), "'", ""))
    sDatei = Environ$("USERPROFILE") & "\Desktop\Songsammlung\" & sDatei & "_DATEN" & ".txt"
    Open sDatei For Input As #1
    Call ListBox1.Clear
    With ListBox7
        Call .Clear
        Do Until EOF(1)
            Line Input #1, strTemp
            avntValue = Split(strTemp, vbTab)
            Call .AddItem(avntValue(LBound(avntValue)))
            Call ListBox1.AddItem
            For ialngIndex = LBound(avntValue) + 1 To UBound(avntValue)
                ListBox1.List(.ListCount - 1, ialngIndex - 1) = avntValue(ialngIndex)
            Next
        Loop
    End With
    Close #1
bekomme aber teilweise die Listbox gefüllt, siehe Bild
https://www.herber.de/bbs/user/158061.jpg
ist das die Aussage für Spalte 1 in der Textdatei?
 Do Until EOF(1)
LG Antonio
Anzeige
AW: Textdatei aufteilen Nachtrag
28.02.2023 15:40:11
Antonio
hallo Nepumuk,
erste listbox7 passt,
zweite listbox1 fehlt mir die erste Spalte
AW: Vielen Dank Nepumuk
28.02.2023 15:44:32
Antonio
Es Passt alles,
nicht nur copy & paste, verstehen sollte man auch.
Vielen vielen Dank
LG Antonio
AW: Spalten ansprechen
28.02.2023 16:07:10
Antonio
Hallo Nepumuk,
wie spreche ich die Spalten der Textdatei an?
das ist aus dem Code für mich nicht ersichtlich.
LG Antonio
AW: Spalten ansprechen
28.02.2023 16:11:20
Nepumuk
Hallo Antonio,
in dieser Schleife werden die Spalten angesprochen:
For ialngIndex = LBound(avntValue) + 1 To UBound(avntValue)
Gruß
Nepumuk
AW: Spalten ansprechen
28.02.2023 16:22:44
Antonio
Das heißt
wenn ich schreibe zB:
For ialngIndex = LBound(avntValue) + 7 To UBound(avntValue)
Dann wird ab der siebte Spalte eingelesen?
Anzeige
AW: Spalten begrenzen
28.02.2023 16:36:48
Antonio
und wie begrenzen wenn mehrere Daten in der Textdatei sind?
angenommen von der siebte Spalte bis zu der dreizenze Spalte
sorrx Nepumuk, es interessiert mich, zum lernen
AW: Spalten begrenzen
28.02.2023 16:45:57
Daniel
For ialngIndex = 7 to 13
Wobei du berücksichtigen musst, dass die Spaltennummerierung hier mit 0 beginnt und nicht mit 1
7. bis 13. Spalte wären dann 6 to 12
Gruß Daniel
AW: Spalten begrenzen
28.02.2023 17:05:29
Antonio
Hallo Daniel,
danke für die Rückmeldung,
habe ersetzt :
 Open sDatei For Input As #1
    Call ListBox1.Clear
    With ListBox7
        Call .Clear
        Do Until EOF(1)
            Line Input #1, strTemp
            avntValue = Split(strTemp, vbTab)
            Call .AddItem(avntValue(LBound(avntValue)))
            Call ListBox1.AddItem
            For ialngIndex = 6 To 12
                ListBox1.List(.ListCount - 1, ialngIndex - 1) = avntValue(ialngIndex)
            Next
        Loop
    End With
    Close #1>
Bekomme die Meldung "Eigenschaft List konnte nicht......"
Ich habe mit Textgatei bisher noch nicht viel gemacht, daher würde mich interessieren.
Was mache ich falsch?
LG Antonio
Anzeige
AW: Spalten begrenzen
28.02.2023 17:12:52
Nepumuk
Hallo Antonio,
dann so:
ListBox1.List(.ListCount - 1, ialngIndex - 6) = avntValue(ialngIndex)
Gruß
Nepumuk
AW: Spalten begrenzen
28.02.2023 17:27:29
Antonio
Hallo Nepumuk,
das passt fast,
nimmt die Item ab der Spalte 6, aber die Spalte 5 dazu, obwohl ich aus der Datei (mit viele Spalten) die 7 bis 13 (Daniel 6 bis 12) brauche
Bitte sei geduldig
:-)
LG
AW: Textdatei aufteilen
28.02.2023 17:47:50
Daniel
HI
das ganze geht vielleicht einfacher, wenn du dir die Textdatei in eine Exceltabelle öffnest und daraus die Listbox befüllst:
... 
sDatei = Trim$(Replace(Split(tblXML.Range("A1"), " für")(0), "'", ""))
sDatei = Environ$("USERPROFILE") & "\Desktop\Songsammlung\" & sDatei & "_DATEN" & ".txt"
 Workbooks.OpenText Filename:=sDatei, Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ 
        Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False
with activesheet.cells(1, 1).currentregion
    listbox1.list = .Columns(1).value 'nur erste Spalte
    listbox2.list = Intersect(.offset(0, 0), .offset(0, 1)).value 'alle weitern spalten, ausßer der ersten
    listbox3.list = Range(.Columns(6), .columns(13)).value 'spalten 6-13 
end with
ActiveWorkbook.Close
so lässt sich die Befüllung der Listboxen aus den unterschiedlichen Spalten einfacher realisieren.
Gruß Daniel
Anzeige
AW: OK geht auch
28.02.2023 18:06:03
Antonio
Hallo Daniel,
dann lasse ich die Textdatei weg, ich meine zum Füllen der Listbox,
Habe schmunzel müssen bei der Erstellung ein neues Tabellenblatt, dieser wird benutzt, dann close.
Habe zwar über Textdatei nicht viel gelernt aber deine Lösung passt für mich.
Vielen Dank
Liebe Grüße
Antonio
AW: aber trotzdem.....
28.02.2023 18:14:35
Antonio
...muss ich was sagen,
ich habe in der Textdatei mal reigecklickt die Spaltenzahl die unten angezeigt wird stimmt nicht mit dem Aussage von dir und Nupumuk überein,
oder sind Textdateien wie Tabellen zu nehmen mit Index "0" ?
LG Antonio
AW: aber trotzdem.....
28.02.2023 18:26:13
Daniel
naja, ich kenne die deine Textdatei nicht und habe auch keine Aussage zu Spaltenzahlen gemacht.
Ich würde dich bitten, mit solchen Aussagen vorsichtig zu sein, wenn du potentielle Helfer nicht verärgern willst.
die Zahlen habe ich von DIR aus DEINEN Anfragen und Beschreibungen übernommen. Wenn da was nicht stimmt, dann liegt das an dir.
Eine Textdatei ist ein Text.
Excel kann lediglich beim Einlesen der Textdatei diesen Text an bestimmten Merkmalen in Zeilen und Spalten aufteilen, so dass eine Tabelle daraus entsteht.
in eine Exceltabelle beginnt die Numierung der Zeilen und Spalten mit 0, in der Tabelle der Listbox (.List) beginnt die Zählung mit 0
auch in einem Array, das über Split erzeugt wird, beginnt die Zählung der einzelnen Elemente mit 0
Gruß Daniel
Anzeige
AW: aber trotzdem.....
28.02.2023 18:52:52
Antonio
Sorry Daniel,
ich wollte damit niemand verärgern, ich bemühe mich mit der Sprache,
gameint waren eure Tipps zu Spalte Begrenzung und nicht solche als Aussage,
zB: spalte 6 To 12, habe verglichen in der Textdatei, da waren andere Zahlen als Spaltnummerierung.
Bitte, ich bedanke mich trotzdem für dein Ratschlag, war nicht böse gemeint.
Habe mich nur falsch ausgedruckt, sehe ich ein jetzt wo du das sagst.
....und danke nochmal an dich und Nepumuk für die Hilfe.
LG Antonio

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige