Thema Datum  Von Nutzer Rating
Antwort
Rot csv-Dateien einlesen, sortieren und speichern
02.12.2013 09:58:07 Fabian
NotSolved

Ansicht des Beitrags:
Von:
Fabian
Datum:
02.12.2013 09:58:07
Views:
1147
Rating: Antwort:
  Ja
Thema:
csv-Dateien einlesen, sortieren und speichern

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot csv-Dateien einlesen, sortieren und speichern
02.12.2013 09:58:07 Fabian
NotSolved