Umwandlung von einer Liste

Quimicoos

Cadet 4th Year
Registriert
Dez. 2013
Beiträge
107
Guten Tag.

Ich habe folgendes Anliegen,
eine normale Editor Datei, z.B. .txt oder in diesem Fall .csv liegt auf dem Desktop.
Sie beinhaltet eine Liste, welche in eine Exceltabelle gelangen muss.
Das kann z.B. so aussehen:

csv.PNG

Nachdem ich die Daten in Excel eingefügt und entsprechend formatiert habe sehen sie so aus:

excel.PNG

Hier wurden jetzt Filter eingesetzt und der Text entsprechend in Spalten eingeteilt.
Als nächstes würde es in eine weitere Tabelle eingefügt werden, welche aber ein anderes Layout hat.
Das ganze ist viel zu umständlich, um es jedes mal manuell zu erledigen.

Deswegen möchte ich da eine komplette Automatik rein bringen.
Meine Idee:
Ich habe die .csv Datei auf meinem Desktop. Mit einer z.B. Batch-Datei führe ich dann ein Skript aus, welches diese ganzen Schritte, nach Reihenfolge für mich durchführt.

Hat jemand einen Vorschlag für mich ?
(Ich möchte keine komplett Lösung von irgendjemanden, nur einen Denkanstoß)
 
Zuletzt bearbeitet:
Du könntest die Datei mit VBA importieren und anschließend richtig formatieren.

Code:
Sub Importieren()

'  CSV Datei wird importiert
  Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
  Const cstrDelim As String = ";" 'Trennzeichen
  
  With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = False
    .Title = "CSV Datei wählen"
'    Pfad zur Datei
    .InitialFileName = "c:\*.csv"
    If .Show = -1 Then
      strFileName = .SelectedItems(1)
    End If
  End With
'  Einfügen in Tabelle
  MsgBox strFileName
  If strFileName <> "" Then
    Application.ScreenUpdating = False
    Open strFileName For Input As #1
    arrDaten = Split(Input(LOF(1), 1), vbCrLf)
    Close #1
    For lngR = 1 To UBound(arrDaten)
      arrTmp = Split(arrDaten(lngR), cstrDelim)
      If UBound(arrTmp) > -1 Then
        With ActiveSheet
          lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
          lngLast = Application.Max(lngLast, 2)
          .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
            = Application.Transpose(Application.Transpose(arrTmp))
        End With
      End If
    Next lngR
  End If


End Sub
 
Ich werde damit mal ein wenig rum probieren, mal schauen ob ich da was gescheites hin bekomme.
Danke für deinen Beitrag :)
 
Zurück
Oben