Wir haben in der Vergangenheit durchaus ähnliche Strukturen importiert bekommen. Die wurden so in Excel gepastet und dann per Makro verteilt. Bspw. mit Folgendem (für anderen Import):
Public Sub OPTabelleVerarbeiten()
Dim Zeile As Long
Dim Anzahl As Long
Dim LetzterKopf As Long
Dim Inhalt As String
Dim Z As String
' Ende finden
Zeile = ActiveSheet.UsedRange.Rows.Count
Do While InStr(Cells(Zeile, 1), "Endsumme") <= 0
Cells(Zeile, 1).Select
DoEvents
Rows(Zeile).Delete
Zeile = Zeile - 1
Loop
Rows(Zeile).Delete
Zeile = Zeile - 1
Anzahl = Zeile
Do While Zeile > 10
Cells(Zeile, 1).Select
DoEvents
Inhalt = Trim(Cells(Zeile, 1))
Z = Left(Inhalt, 1)
If ((Z = "1") Or (Z = "2") Or (Z = "3") Or (Z = "4") Or (Z = "5") _
Or (Z = "6") Or (Z = "7") Or (Z = "8") Or (Z = "9") Or (Z = "0") _
Or (Left(Inhalt, 9) = "OP-Salden")) _
And (Left(Inhalt, 9) <> "1 Schulte") Then
' Datenzeilen
If Mid(Cells(Zeile, 1), 10, 1) = "." Then
' Kopfzeile
Cells(Zeile, 1).TextToColumns Destination:=Cells(Zeile, 1), _
DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(12, 1), Array(96, 1), Array(115, 1), _
Array(124, 1)), TrailingMinusNumbers:=True
ElseIf Left(Inhalt, 9) = "OP-Salden" Then
' Summenzeile
Cells(Zeile, 1).TextToColumns Destination:=Cells(Zeile, 1), _
DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(21, 1), Array(32, 1), Array(36, 1), _
Array(51, 1), Array(68, 1), Array(93, 1), Array(105, 1), Array(118, 1), _
Array(132, 1)), _
TrailingMinusNumbers:=True
Else
' Datenzeile
Cells(Zeile, 1).TextToColumns Destination:=Cells(Zeile, 1), _
DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(21, 1), Array(32, 1), Array(36, 1), _
Array(51, 1), Array(68, 1), Array(93, 1), Array(105, 1), Array(118, 1)), _
TrailingMinusNumbers:=True
End If
Else
' Zwischenzeilen
Rows(Zeile).Delete
Anzahl = Anzahl - 1
End If
Zeile = Zeile - 1
Loop
Columns(1).Insert
Columns(1).Insert
Zeile = 12
LetzterKopf = 11
Do While Zeile <= Anzahl
Cells(Zeile, 1).Select
If InStr(Cells(Zeile, 3), ".") > 0 Then
' neuer Kopf
Rows(LetzterKopf).Delete
LetzterKopf = Zeile - 1
Anzahl = Anzahl - 1
Else
' Daten
Cells(LetzterKopf, 3).Copy Cells(Zeile, 1)
Cells(LetzterKopf, 4).Copy Cells(Zeile, 2)
If Cells(Zeile, 4) = "OP-Salden" Then
Range(Cells(Zeile, 4), Cells(Zeile, 12)).Cut Cells(Zeile, 12)
End If
Zeile = Zeile + 1
End If
Loop
Rows(LetzterKopf).Delete
End Sub