Herbers Excel-Forum - das Archiv

Daten import aus txt--Datei


Betrifft: Daten import aus txt--Datei
von: Rico

Geschrieben am: 18.09.2019 19:21:57
Hallo,
ich habe eine Text-Datei die sieht wie folgt aus:
#1
!Name1
46001 100.01
46002 100.01
46003 100.01
End
#2
!Name2
46001 200.02
46002 200.02
46003 200.02
End
...usw
#100
!Name100
46001 300.03
46002 300.03
46003 300.03
End
End
Die Anzahl an Zeilen zwischen !Name1 und End variiert. Bisher muss ich den Text in Excel einfügen, Text in Spalten, Punkt durch Komma ersetzen und per STR+Pfeil Kopieren und nebeneinander in eine 2. Excel-Datei kopieren. Dort soll es wie folgt aussehen:
Spalte A Spalte B Spalte C Spalte D
!Name1 !Name1 !Name2 !Name2
46001 100,01 46001 200,02
46002 100,01 46001 200,02
46003 100,01 46001 200,02
Kann man das mit Hilfe von VBA automatisieren?
Würde mich über Eure Hilfe freuen,
Grüße Rico

Betrifft: AW: Daten import aus txt--Datei
von: 1713886.html
Geschrieben am: 19.09.2019 13:48:14
Hallo Rico,
versuche einmal ob das Sheet das macht.
Hinweis im Sheet beachten.
https://www.herber.de/bbs/user/132114.xlsm
Gruß Armin

Betrifft: AW: Daten import aus txt--Datei
von: 1713907.html

Geschrieben am: 19.09.2019 14:28:24
Hallo Rico,
hier ein entsprechendes Makro mit Dateiauswahldialog.
Für den Import wird immer ein neues Tabellenblatt angelegt.
LG
Franz

Sub Inport_Txt_Datei()
Dim wks As Worksheet
Dim varTxt
Dim bolName As Boolean
Dim strTemp As String, varSplit
Dim lngSpa As Long, lngZeile As Long
Dim iKanal As Integer
'Textdatei auswählen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte Textdatei auswählen, die importiert werden soll"
.FilterIndex = 6 'Textdateien
.AllowMultiSelect = False
If .Show = -1 Then
varTxt = .SelectedItems(1)
Else
Exit Sub
End If
End With
'Neues Blatt anlegen
ActiveWorkbook.Worksheets.Add Before:=ActiveWorkbook.Sheets(1)
Set wks = ActiveSheet
Application.ScreenUpdating = False
'Kanal für Textdatei öffnen
iKanal = FreeFile()
Open varTxt For Input As #iKanal
lngSpa = 0
With wks
'Textdaten Zeilenweise einlesen
Do Until EOF(1)
Input #1, strTemp
If InStr(1, strTemp, "#") > 0 Then
'Nächste Spalte und Startzeile setzen
If lngSpa = 0 Then lngSpa = 1 Else lngSpa = lngSpa + 2
lngZeile = 1
bolName = True 'auf Zeile mit "#" folgt Zeile mit Name
ElseIf Trim(strTemp) = "End" Or Trim(strTemp) = "" Then
'do nothing - Zeilen überspringen
Else
If bolName = True Then
'Name in beiden Spalten der 1. Zeile eintragen
.Cells(lngZeile, lngSpa).Value = strTemp
.Cells(lngZeile, lngSpa + 1).Value = strTemp
bolName = False
Else
'Text in Zeilen ohne Name aufbereiten
strTemp = Trim(strTemp) 'Leerzeichen am Anfang/Ende entfernen
strTemp = Replace(strTemp, "  ", " ") 'Doppelte Leerzeichen durch einfaches  _
ersetzen
varSplit = Split(strTemp, " ") 'Text am Leerzeichen auftrennen
lngZeile = lngZeile + 1
If UBound(varSplit) > 0 Then
.Cells(lngZeile, lngSpa).Value = varSplit(0) '1. Zahl eintragen
.Cells(lngZeile, lngSpa + 1).Value = CDbl(Replace(varSplit(1), ".", ",")) ' _
2. Dezimalzahl eintragen
Else
.Cells(lngZeile, lngSpa).Value = varSplit(0)
End If
End If
End If
Loop
End With
'Kanal für Textdatei schliessen
Close iKanal
Application.ScreenUpdating = True
End Sub


Betrifft: AW: Daten import aus txt--Datei
von: 1713948.html
Geschrieben am: 19.09.2019 17:36:56
Hallo Franz,
getestet und bin begeistert, dein VBA Code funktioniert einwandfrei. Vielen Dank für Deine Hilfe!
Grüße Rico

Betrifft: AW: Daten import aus txt--Datei
von: 1713947.html
Geschrieben am: 19.09.2019 17:36:13
Hallo Armin,
getestet und bin begeistert, dein Makro funktioniert einwandfrei. Vielen Dank für Deine Hilfe!
Grüße Rico

Excel-Beispiele zum Thema "Daten import aus txt--Datei"
Zeichenfolgen in Zahlen nach Textimport Textimport aus Text-Datei mit Smikoli als Feldtrenner
Import aus dem Internet Textimport mit Semikolon als Feldseparator
In importierter Textdatei englische Werte in deutsche wandeln Textdatei in Tabellenblatt importieren
Nach Textimport Strings in Zahlen wandeln Textdatei nach Begriff durchsuchen und Fundzeile importieren
Diagramm exportieren und in Tabellenblatt importieren Suchbegriffe in UserForm eingeben, Fundstelle importieren
Bewerten Sie hier bitte das Excel-Portal