Textbox Inhalt Splitten mit mehreren Trennzeichen.

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von apple987123.

    Textbox Inhalt Splitten mit mehreren Trennzeichen.

    Hallo Leute
    Ich habe hier ein kleines Problem, ich habe ein (von einem anderen Programm generiertes) Texfile, nun möchte ich das per VBA in die Excel Tabelle übertragen lassen, das Problem ist nur, dass dieses Textfile total besch...eiden formatiert ist.
    Und zwar etwa so:

    /EDIT: Es ist natürlich alles auf einer Zeile, nur sieht man das hier nicht:

    Vorname, Nachname;1111;Kategorie;01.01.2011 00:00:00;31.12.2011 00:00:00;Abteilung;LOL;RandomText:;RandomText;;;

    das geht so über mehrere Tausen Zeilen. Wie ihr villeicht gemerkt habt, gibt es keine saubere Trennung geschweige denn ein klares Trensszeichen (am Anfang kommt ein Komma, danach Semikolon und am Schluss sogar gleich 3, ausserdem ist das zeichen nach dem Komma nicht einfach ein Leerschlag sondern irgendetwas anderes)
    Nun wollte ich wissen, wie ich das am besten splitten könnte. Kann ich als Split Zeichen komma UND Semikolon machen? Und wie mache ich das am besten?

    Vielen Dank
    Apple987123
    Ich sehe schon ein Format wie mans auslesen könnte:

    Du Splittest zuerst überall mal bei dem (";") zeichen

    dann würde es so aussehen:

    Vorname, Nachname
    1111
    Kategorie
    01.01.2011 00:00:00
    31.12.2011 00:00:00
    Abteilung
    LOL
    RandomText:
    RandomText

    Den Vorname und Nachname kannst du dann jeweils mit dem (",") zeichen Splitten.

    MFG
    GOOGLE ist mein Meister :)
    Ich werde mir beide Möglichkeiten einmal durch den Kopf gehen lassen.
    Danke für die (wie immer) schnellen und kompetenten Antworten.

    EDIT:
    Hm... ich bin gerade etwas verwirrt:
    Wenn ich diesen Text bei jedem ; splite, wieso wird dann Vorname von Name getrennt?
    Ich mache das in etwa so:
    (Tut mir Leid, in den VB-Tags habe ich keinen Zeilenumbruch hinbekommen >.<)

    FUNCTION oeffnen()
    Function oeffnen() As Boolean
    Set dlg = Application.FileDialog(msoFileDialogFilePicker)
    With dlg
    .Title = "File auswählen"
    .ButtonName = " Öffnen "
    .AllowMultiSelect = False

    If .Show = True Then
    Open dlg.SelectedItems(1) For Input As #1
    pfad = dlg.SelectedItems(1)
    oeffnen = True
    Else
    oeffnen = False
    End If
    End With
    End Function

    Button Klick
    Private Sub button_import_Click()
    Dim i As Long
    i = 6
    If oeffnen() = True Then
    Do While Not EOF(1)
    Input #1, Var
    avarSplit = Split(Var, ";")
    For j = 0 To UBound(avarSplit)
    Cells(i, j + 1) = avarSplit(j)
    Next j

    i = i + 1
    Loop
    Close #1
    End If
    End Sub


    Grüsse
    Apple987123

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „apple987123“ ()

    Warum Verwirrt?
    Wenn du bei jedem ; Splittest erhältst du aus dem ersten Resultat

    Quellcode

    1. Vorname, Nachname


    Vorname und Nachname werden nicht bei , zeichen gesplittet also erhältst du beides zusammen und muss halt vor und nachname nochmals extra mit dem komma (,) Splitten.

    MFG

    Edit: hab ma mal kurz ne Minute genommen. Könnte zb so aussehen:

    Visual Basic-Quellcode

    1. Dim quelltext As String = "Vorname, Nachname;1111;Kategorie;01.01.2011 00:00:00;31.12.2011 00:00:00;Abteilung;LOL;RandomText:;RandomText;;;"
    2. Dim v As Array = Split(quelltext, ";")
    3. For i As Integer = 0 To UBound(v)
    4. Dim link As String = Split(v(i), ";")(0)
    5. If Not link = Nothing Then ' Wenn Link nicht nichts ist ^^
    6. If link.Contains(",") Then 'Wenn der Link komma enthält gleich Splitten (0) & (1)
    7. Dim vornachname() As String = link.Split(",") ' beim komma Splitten
    8. MsgBox(vornachname(0) & vbNewLine & vornachname(1).Replace(" ", "")) 'Replace zwecks leerzeichen entfernen
    9. Else
    10. MsgBox(link)
    11. End If
    12. End If
    13. Next


    Geht natürlich alles etwas schöner.... aber funktioniert soweit.

    MFG
    GOOGLE ist mein Meister :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bady“ ()

    Warum Verwirrt?
    Wenn du bei jedem ; Splittest erhältst du aus dem ersten Resultat:
    Vorname, Nachname

    Das ist es ja, aber die ersten 2 sind nicht zusammen sondern sind getrennt. Ich bekam also nur Vorname obwohl das mit einem "," und nicht ";" getrennt war.

    Wie dem auch sei. Ich habe es nun dank eurer Hilfe FAST fertig gebracht. Nur etwas ist beim Einlesen der Datei etwas komisch. Wieso werden aus den umaluten (z.B. ä => ä)?
    Ich weiss, dass das etwas mit dem UTF format zu tun hat. (Glaube ich)
    Aber dieses wird ja nirgends definiert.

    Danke nochmal für die Hilfe
    Apple987123
    Versuch mal die deitei mit uft einzulesen. zb mit:

    Visual Basic-Quellcode

    1. Dim sw As New StreamWriter("textdatei.txt", True, System.Text.Encoding.UTF8)
    GOOGLE ist mein Meister :)
    @Bady
    Tut mir leid, ich verstehe nicht so ganz, was der StreamWriter sein soll=
    Ausserdem habe ich mal irgendwo etwas gelsen von

    .Charset = "UTF-8"

    wäre das villeicht auch eine Lösung?

    Hier nochmal wie ich das File einlese:

    Spoiler anzeigen

    Function oeffnen() As Boolean
    Set dlg = Application.FileDialog(msoFileDialogFilePicker)
    With dlg
    .Title = "File auswählen"
    .ButtonName = " Öffnen "
    .AllowMultiSelect = False

    If .Show = True Then
    Open dlg.SelectedItems(1) For Input As #1
    pfad = dlg.SelectedItems(1)
    oeffnen = True
    Else
    oeffnen = False
    End If End With
    End Function


    Grüsse
    Apple987123

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „apple987123“ ()