Попробуйте,
Sub Test()
Dim Ws As Worksheet
Dim s As String
Dim pattn As String
'Dim Match As MatchCollection
Dim Match As Object
Dim vR() As Variant
Dim i As Long, n As Long, k As Long
Dim vSplit As Variant
s = Range("a1")
pattn = "(Heading[ ]{1,}\d{1,}[ :\w]{1,})"
Set Match = GetRegEx(s, pattn)
s = ReplaceRegEx(s, pattn, "mysplit")
s = Replace(s, "=", "")
vSplit = Split(s, " mysplit")
n = UBound(vSplit)
ReDim vR(1 To (n + 1) * 2 - 1)
k = 1
For i = 0 To n - 1
vR(k) = vSplit(i)
vR(k + 1) = Match.Item(i)
k = k + 2
Next i
vR(UBound(vR)) = vSplit(n)
Range("c1").Resize(1, UBound(vR)) = vR '<~~ content and Heading
Range("c2").Resize(1, n + 1) = vSplit '<~~ contents
End Sub
Function GetRegEx(StrInput As String, strPattern As String) As Object
Dim RegEx As Object
'Set RegEx = New RegExp
Set RegEx = CreateObject("VBscript.RegExp")
With RegEx
.Global = True
.IgnoreCase = False
.MultiLine = True
.Pattern = strPattern
End With
If RegEx.Test(StrInput) Then
Set GetRegEx = RegEx.Execute(StrInput)
'GetRegEx = RegEx.Replace(StrInput, strReplace)
End If
End Function
Function ReplaceRegEx(StrInput As String, strPattern As String, strReplace)
Dim RegEx As Object
'Set RegEx = New RegExp
Set RegEx = CreateObject("VBscript.RegExp")
With RegEx
.Global = True
.IgnoreCase = False
.MultiLine = True
.Pattern = strPattern
End With
If RegEx.Test(StrInput) Then
ReplaceRegEx = RegEx.Replace(StrInput, strReplace)
End If
End Function
Изображение результата