Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Txt file laden anpassen und als txt speichern

Txt file laden anpassen und als txt speichern
08.01.2019 21:55:17
Koenig
Guten Abend.
ich habe eine txt Datei mit über 600.000 Zeilen. Diese muss ich jeden Monat verarbeiten. Da die Struktur der Datei jedoch nicht so richtig passt, muss ich die Datei anpassen. Das ist sehr aufwendig. Vielleicht hat jemand eine Idee, wie das einfacher ginge am besten über VBA. Der Datensatz ist immer gleich aufgebaut, in den Bereichen nach dem + steht jeweils ein Monatswert in der Reihenfolge Jan - Dez.
So sieht ein Datensatz aus, wenn er roh aus der txt kommt:
STGAPREQMF 20181200ST201812 A0281MMSD TCL1000000002020+000000000+000000000+000000000+000000000+000000000+000000000+000000000+000000000+000000000+000000000+000000000+000000000
Ich benötige den Datensatz so:
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Jan+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Feb+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Mrz+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Apr+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Mai+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Jun+000000000
STGAPREQMF 20181200ST201812 A0281V167 TCL1000000002020Jul+000000000
usw. also 12 Zeilen aus einer und das für die ganze Datei. Den Monat benötige ich zusätzlich. Heute löse ich es über Excel, dort baue ich die Struktur auf, und dann über zwei Makros. Eines bringt mir alles in eine Spalte und eines füllt meine .txt Datei. Doch Excel kann mit so großen Datenmengen nur schwer umgehen, deshalb wäre es gut, wenn man die Daten gar nicht erst in eine Excel Datei Laden/speichern müsste oder nur Teilweise zur Verarbeitung. Schon jetzt vielen Dank. Jens

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Txt file laden anpassen und als txt speichern
08.01.2019 22:13:31
Koenig
Mit diesem Makro schreibe ich heute die Teilstrings in eine zweite Tabelle, um Sie von dort mit einem weiteren Makro in eine txt Datei zu schreiben, mein versuch Sie gleich in eine txt Datei zu schreiben, klappt nicht, wenn es hierfür schon eine Lösung gäbe, wäre mir auch schon geholfen.
Sub Ausgriff()
Dim arQ, arZ(), zz As Long, cc As Long
'Dim strPath As String
arQ = Sheets("Tabelle1").Range("b5:m200").Value ' Quellbereich  geht noch viel weiter aber zum  _
testen bis 200
ReDim arZ(1 To UBound(arQ) * UBound(arQ, 2), 0)                   ' Zielarray
For zz = 1 To UBound(arQ)
For cc = 1 To UBound(arQ, 2)
arZ(UBound(arQ) * (cc - 1) + zz, 0) = arQ(zz, cc)           ' Zielarray füllen
Next cc
Next zz                                                           ' Ausgabe
'ThisWorkbook.Sheets("Tabelle2").Cells(1, 7).Resize(UBound(arZ)) = arZ  ' so schreibe ich es  _
heute
'und so würde ich es gern machen
fkt_ClearTXT ("C:\Users\JensK20\Datei.txt")
Open "C:\Users\JensK20\Datei.txt" For Append Access Write Lock Write As #1
Print #1, (UBound(arZ))  ' hier ist aber irgendwas falsch
Close #1
End Sub

Anzeige
AW: Txt file laden anpassen und als txt speichern
08.01.2019 22:20:59
Sepp
Hallo Koenig,
wenn deine Angaben stimmen, dann so.
Modul Modul1
Option Explicit 
 
Sub textfile() 
  Dim strFile As String, strTemp As String, strInput As String, varText As Variant, varTemp As Variant 
  Dim FF As Integer, lngI As Long, lngJ As Long 
 
  strFile = "D:\Forum\test.txt" 'die Text-Datei 
 
  strInput = TextReadAll(strFile) 
 
  On Error Resume Next 
  If Len(strInput) Then 
    varText = Split(strInput, vbLf) 
    For lngI = 0 To Ubound(varText) 
      If Len(varText(lngI)) Then 
        If InStr(1, varText(lngI), "+") Then 
          varTemp = Split(varText(lngI), "+") 
          If Ubound(varTemp) = 12 Then 
            For lngJ = 1 To 12 
              strTemp = strTemp & varTemp(0) & Format(DateSerial(1, lngJ, 1), "MMM") & "+" & varTemp(lngJ) & vbLf 
            Next 
          End If 
        End If 
      End If 
    Next 
    If Len(strTemp) Then 
      strTemp = Left(strTemp, Len(strTemp) - 1) 
      FF = FreeFile 
      Open strFile For Output As #FF 
      Print #FF, strTemp 
      Close #FF 
    End If 
  End If 
End Sub 
 
Private Function TextReadAll(ByVal FileName As String, Optional ByVal MaxLength As Long = 0) As String 
  Dim FF As Integer, strText As String 
 
  On Error Resume Next 
 
  If Dir(FileName, vbNormal) <> "" Then 
    FF = FreeFile 
    Open FileName For Binary As #FF 
    If MaxLength = 0 Then MaxLength = LOF(FF) 
    If MaxLength < LOF(FF) Then MaxLength = LOF(FF) 
    strText = Space$(MaxLength) 
    Get #FF, , strText 
    Close #FF 
    TextReadAll = strText 
  End If 
 
  On Error GoTo 0 
  Err.Clear 
End Function 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Txt file laden anpassen und als txt speichern
08.01.2019 22:49:37
Koenig
Hallo Sepp, vielen herzlichen Dank. Genau so hatte ich mir die Ausgabedatei vorgestellt. Könnte man es so machen, das die Ausgabe Datei eine andere Datei ist, als die Eingangsdatei? Was glaubst du, wie lange wird das verarbeiten von den 600.000 Zeilen ca. Dauern. Habe es gerade mit 10 probiert, das lieft super schnell. Herzlichen Dank. Jens
AW: Txt file laden anpassen und als txt speichern
08.01.2019 22:55:22
Koenig
hab es selber hinbekommen. nochmal vielen dank!!!
AW: Txt file laden anpassen und als txt speichern
08.01.2019 23:24:36
Koenig
Hallo Sepp, ich versuche gerade 100.000 Zeilen einzulesen, dies dauert aber schon sehr lange, könnte man die Datei vielleicht Scheibchenweise einlesen, sagen immer 10.000 Sätze, dann schreiben und dann die nächsten 10.000! Würde das schneller gehen? Vielen Dank. Jens
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige