Microsoft Excel

Herbers Excel/VBA-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

Beiträge aus dem Excel-Forum zum Thema "Daten import aus txt--Datei"