Frage von DefSteff22, 35

Wie kann ich bestimmte Teile einer ASCII-Datei in Excel importieren?

Ich möchte eine ASCII-Datei in Excel importieren. Die ASCII-Datei wird automatisch erstellt, mit einem Header und Informationen in jeder Zeile die ich nicht benötige.

Die benötigte ASCII Zeile sieht so aus: AUTO.MSG_DB_CET = ABB00090: [TEXT] AUTO.MSG_DB_CET = ABB90090: [TEXT] Pro Zeile gibt es max. eine ABB0 oder eine ABB9.

In der gesamten Datei gibt es mehrere ABB0 und ABB9.

Ist es möglich in jeder Zeile nach der Abfolge ("ABB0" oder "ABB9") zu suchen. Dann diese Abfolge ABB00090 in Spalte A zu importieren und den Text nach dem Doppelpunkt in Spalte B?

Ich danke euch für eure Unterstützung.

Expertenantwort
von Ninombre, Community-Experte für Excel, 16

Der Teufel steckt im Zweifel im Detail. Kann der restliche Text nach dem ABB... komplett übernommen werden bis zum Ende der Zeile oder muss man irgendwo aufhören?

Das ganze könntest Du manuell mit ein paar Formeln machen. Über Ribbon Daten > Externe Daten abrufen > aus Text kannst Du die Datei importieren.

In eine Hilfsspalte:
=WENNFEHLER(SUCHEN("ABB00090";A1);SUCHEN("ABB90090";A1))

Über den Autofilter die Zeilen mit #Wert selektieren und löschen. Die Zahl ist die Stelle, an der der Suchtext in der Zelle erscheint. Spielt erstmal keine Rolle, wo der Text steht, entscheidend ist ja, dass er in der Zeile enthalten ist.

Das Aufteilen des Textes kann man auch über Formeln machen oder falls die Länger immer gleich ist über Daten > Text in Spalten.

Alternativ geht das ganze per Makro. Ich hab eine alte Antwort rausgekramt
https://www.gutefrage.net/frage/wie-basisdaten-von-kommunen-aus-wikipedia-nach-e...

und auf die Schnelle umgestrickt. Bei mir klappt es, allerdings kenne ich natürlich nicht Deine genauen Daten. Im Zweifel nachfragen, was noch anzupassen ist.

Sub TextImport()
Dim i As Long
Dim iFile As Integer
Dim sSearch As String, sTxt As String
Dim sFile As String
i = 1

sFile = "c:\users\mustermann\desktop\test.txt" 'Pfad entsprechend anpassen
iFile = FreeFile
Open sFile For Input As iFile
Do Until EOF(1)
Input #iFile, sTxt
If InStr(sTxt, "ABB0009") Then
Cells(i, 1).Value = Mid(sTxt, InStr(sTxt, "ABB0009"), 8)
Cells(i, 2).Value = Mid(sTxt, InStr(sTxt, "ABB0009") + 9, 99)
i = i + 1
End If
If InStr(sTxt, "ABB9009") Then
Cells(i, 1).Value = Mid(sTxt, InStr(sTxt, "ABB9009"), 8)
Cells(i, 2).Value = Mid(sTxt, InStr(sTxt, "ABB9009") + 9, 99)
i = i + 1
End If

Loop
Close iFile

End Sub

Kommentar von DefSteff22 ,

Danke!!! Es macht was es soll! :)

Habe nur noch ein paar Kleinigkeiten für mich ergänzen müssen!

Keine passende Antwort gefunden?

Fragen Sie die Community