This works for me
Sub test()
Dim sourceSheet As Worksheet
Dim destinationSheet As Worksheet
Dim destinationRange As Range
Dim sourceCell As Range, sourceComment As Comment
Dim commentStr As String, outRRay As Variant
Set sourceSheet = ThisWorkbook.Sheets("Before")
On Error GoTo Halt
If sourceSheet.Comments.Count > 0 Then
On Error GoTo 0
Set destinationSheet = ThisWorkbook.Sheets.Add
Set destinationRange = destinationSheet.Range("A1:D1")
destinationRange.Value = Array("More info", "Size", "ID", "Name")
For Each sourceComment In sourceSheet.Comments
With sourceComment
commentStr = .Text
commentStr = Application.Substitute(Application.Substitute(commentStr, Chr(10), vbNullString), Chr(13), vbNullString)
commentStr = Application.Substitute(commentStr, ",", "=")
outRRay = Array(vbNullString, _
Split(Split(commentStr, ":")(1), "=")(1), _
Split(Split(commentStr, ":")(1), "=")(3), _
Split(Split(commentStr, ":")(1), "=")(5))
outRRay(0) = sourceComment.Parent.End(xlToLeft).Text
With .Parent
If .End(xlUp).Row > 1 Then
outRRay(0) = outRRay(0) & .End(xlUp).Text
End If
End With
End With
destinationRange.EntireColumn.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 4) = outRRay
Next sourceComment
End If
Halt:
On Error GoTo 0
End Sub
Bookmarks