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