Sub MaakTabel()
Dim sn, i As Long, Arr(), Dict As Object, i1 As Integer
Dim vKolom1
vKolom1 = Array("Aspect: _MDMS_CREATION_DATE", "Aspect: _MDMS_DOCID", "Aspect: _MDMS_TITLE", "Aspect: _MDMS_TYPE", "Aspect: COMPANY_CODE", "Aspect: CONTRACT_NUMMER", "Aspect: DOCUMENT_BRON", "Aspect: DOCUMENT_GROEP", "Aspect: DOCUMENT_NAAM", "Aspect: NOTA_NUMMER", "Aspect: PRINT_DATUM", "Aspect: PUBLICEREN", "Aspect: REKENINGCOURANT_NR", "Aspect: SUB_DOC_NAAM", "Aspect: BATCH_ID", "Aspect: POLIS_NUMMER")
Set Dict = CreateObject("scripting.dictionary")
sn = Sheets("blad2").Range("A1").CurrentRegion 'lees je gegevens in
ReDim Arr(1 To 1, 1 To 1) 'voorlopige dimensie
With Dict 'je dictionary
For i = 1 To UBound(sn) '1 voor 1 je gegevens aflopen
Select Case Split(sn(i, 1), ":")(0) 'wat staat er in de 1e kolom voor het dubbelpunt
Case "Title"
If UBound(Arr, 2) = UBound(vKolom1) + 3 Then .Item(.Count) = Arr 'had je al een geldige arr, schrijf die weg naar dictionary
ReDim Arr(1 To 1, 1 To UBound(vKolom1) + 3) 'arr opnieuw dimensioneren
Arr(1, 1) = Mid(sn(i, 1), InStr(1, sn(i, 1), ":", 1) + 1) 'title wegschrijven
Case "Type" 'niets doen
Case "Time": Arr(1, UBound(Arr, 2)) = Mid(sn(i, 1), InStr(1, sn(i, 1), ":", 1) + 1) 'gedeelte na dubbelpunt wegschrijven naar laatste element van arr
Case "Aspect"
On Error Resume Next
i1 = 0: i1 = WorksheetFunction.Match(Trim(sn(i, 1)), vKolom1, 0) 'welk kenmerk ?
On Error GoTo 0
If i1 > 0 Then
Arr(1, i1 + 1) = Trim(Mid(sn(i, 2), 7)) 'wegschrijven naar arr
Else
MsgBox "onbekend kenmerk, niet in vkolom1 : " & sn(i, 1)
End If
End Select
Next
.Item(.Count) = Arr 'allerlaatste ook wegschrijven naar dictionary
End With
With Sheets("blad2").Range("D1") 'bereik waar naar toe geschreven wordt
.Resize(, UBound(Arr, 2) + 1).EntireColumn.ClearContents 'kolommen leegmaken
.Resize(, UBound(vKolom1) + 3).Value = Split(Replace("Title" & vbLf & Join(vKolom1, vbLf) & vbLf & "Time", "Aspect: ", ""), vbLf) 'koppen erboven zetten
.Offset(1).Resize(Dict.Count, UBound(Arr, 2)).Value = Application.Index(Dict.items, 0, 0) 'wegschrijven
.Resize(, UBound(Arr, 2)).EntireColumn.AutoFit 'kolombreedte
End With
End Sub