Excel VBA - Überschrift aus Slip erstellen

jerry0110

Erfahrenes Mitglied
Hallo zusammen,

ich arbeite mal wieder an einem Projekt. Ich lasse von unserm System CSV Dateien erstellen, die bestimmte Auswertungen beinhalten. Was jedoch nicht geht ist, dass die CSV Überchriften an den Anfang bringt und direkt mit der Auswertung beginnt.

Jetzt möchte ich gerne ca. 13 Reports mit einem Makro abfrühstücken. Hierzu habe ich in einer Exceltabelle alle Daten der einzelenen Report hinterlegt (Name des Reports, Emailadresse, Überschrift, etc).

1. Die CSV soll in eine Excel umgewandelt werden. (Kann ich).
2. Dann soll in der erstellen Excel eine Überchrift angelegt werden (Überchrift sind mehrere Wörter die mit ";" getrennt sind). Mit Split trenne ich die Überchrift. (Das bekomme ich auch noch hin) Und dann soll jedes Wort in eine Zelle von links nach rechts. (Das bekomme ich nicht hin).
3. Danach suchen und in andere Tabellenblätter sortieren (Bekomme ich hin).
4. Email erstellen (Bekomme ich hin)

Zu Punkt 2 habe ich beim Split folgendes:

Visual Basic:
Public Sub Sliptzaehlen()
Dim sStr As String
Dim Spl
Dim L As Long
sStr = Range("H4")
Spl = Split(sStr, ";")
MsgBox UBound(Spl) + 1 & " Elemente"
For L = 0 To UBound(Spl)
    MsgBox Spl(L)
Next
End Sub

Die letzte Zeile finden, macht für mich hier ja keinen Sinn, wohin damit ich mit dem Füllen der Zellen beginnen kann.

Hier hatte ich das mal gemacht (mit Hilfe von Yaslaw):

Visual Basic:
    Dim ws As Worksheet: Set ws = Worksheets("Bearbeitet")
    Dim maxParts As Long
    Dim rowNr As Long
    Dim parts() As String
    Dim col As Range
    Dim colNrDelta As Long
   
    'Spalte auswählen
   Set col = ws.Columns(Application.Match("FIRMENNAME", Rows(1), 0))

    'Den Replace durchführen
   col.Replace Chr(10), "|"

    'Anzahl neuer Spalten ermitteln. Massgebend ist das Feld mit den meisten |
   For rowNr = 2 To xlsGetLastRow(ws)
        parts = Split(ws.Cells(rowNr, col.Column), "|")
        If UBound(parts) + 1 > maxParts Then maxParts = UBound(parts) + 1
    Next rowNr
   
   'Spalten hinzufügen und Titel setzen
    For colNrDelta = maxParts To 1 Step -1
        ws.Columns(col.Column + 1).Insert xlShiftToRight
        ws.Cells(1, col.Column + 1).Value = ws.Cells(1, col.Column).Value & "(" & colNrDelta & ")"
    Next colNrDelta

    'Neue Felder abfüllen
   For rowNr = 2 To xlsGetLastRow(ws)
        parts = Split(ws.Cells(rowNr, col.Column), "|")
        For colNrDelta = 1 To UBound(parts) + 1
            ws.Cells(rowNr, col.Column + colNrDelta).Value = parts(colNrDelta - 1)
        Next colNrDelta
    Next rowNr

    Set col = Nothing
    Set ws = Nothing

Dies war aber für eine schon vorhandene Überschrift die gesplittet wurde in die Anzahl der vorhandenen getrennten Inhalte mit "|".

Kann mir jemand hier einen Ansatz sagen, wie ich das lösen kann`?
 
Zurück