Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1340to1344
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

csv-Dateien einlesen, sortieren und speichern

csv-Dateien einlesen, sortieren und speichern
02.12.2013 10:04:29
Fabian
Hallo Forum-User,
ich habe schon einiges zu diesem Thema recherchiert, jedochkeine passende Antwort gefunden und hoffe, dass mir hier jemand helfen kann.
Folgendes Problem macht mir zu schaffen:
  • Ich möchte mehrere .csv Dateien über VBA öffnen (Messdaten)

  • Die Dateien bestehen aus ca. 250*10000 Werten, welche durch Kommas getrennt sind

  • Nach dem Öffnen sollen die Informationen einer .csv in jeweils ein Arbeitsblatt geschrieben und in Spalten sortiert werden

  • Anschließend soll jedes Arbeitsblatt als neue, formatierte .xls Datei gespeichert werden

  • Mittels Makrorecorder und eigener Recherche bin ich bisher soweit gekommen:
    Sub test()
    ' test Makro
    ' Tastenkombination: Strg+t
    Dim strFilename As Variant
    Dim iLoop As Integer
    strFilename = Application.GetOpenFilename("Datei Einlesen (*.csv), *.csv", MultiSelect:= _
    True)
    ActiveWorkbook.Worksheets.Add
    For iLoop = LBound(strFilename) To UBound(strFilename)
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & strFilename(iLoop), _
    Destination:=Range("A1"))
    .Name = "Neues Blatt"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 850
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,   _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,   _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,   _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,   _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  _
    _
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
    , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
    .TextFileThousandsSeparator = " "
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    ActiveWorkbook.Worksheets.Add
    End With
    Next
    End Sub
    

    Dies ermöglicht mir, die csv über einen Öffnungsdialog auszuwählen. Diese werden in das gewünschte Format gebracht und in einzelne Arbeitsblätter geschrieben. Jedoch wird zusätzlich ein leeres Arbeitsblatt hinzugefügt. Außerdem werden nur die Werte der ersten csv übernommen. Bei der zweiten wird nur die erste Spalte mit "####" gefüllt und der Rest bleibt leer.
    Habe es bisher mit 2 csv getestet, da mir momentan nicht mehr zur Verfügung stehen. Da es sensible Daten sind kann ich leider kein Beispiel zur Verfügung stellen. Sie sehen in etwa so aus:
  • 1.Zeile: zeit, temperatur, druck, ...

  • 2.Zeile: datum uhrzeit, zahl, zahl, ...

  • 3.Zeile und ff.: wie Zeile 2

  • Ich hoffe ich konnte mein Problem detailliert genug beschreiben.
    Vielen Dank im Voraus für die Hilfe.

    1
    Beitrag zum Forumthread
    Beitrag zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    CROSSPOST O-L
    02.12.2013 10:54:04
    CROSSPOST
    Anzeige

    312 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige