Dear Mecanicu,
The rule you created works well for my intentions which is to create an assy from a multi-bodied part, but does it also happen to you that patterned or mirrored parts don't have the solid included in the derived part?
All the other parts have a small green arrow in the derived part browser but my mirrored part does not.
Please find attached a screenshot of the derived part browser and the modded code.

Here is your code that I have modified to see if it can serve my needs.
' Folder to place the new assembly and parts
Dim path As String: path = ThisDoc.Path & "/"
' Use the docs first 9 characters as prefix for the new filenames
Dim prefix As String: prefix = Left(ThisDoc.FileName(False), 9)
Dim doc As PartDocument
doc = ThisApplication.ActiveDocument
' Create new assembly
Dim assy As AssemblyDocument
assy = ThisApplication.Documents.Add(kAssemblyDocumentObject)
Dim sBody As SurfaceBody
For Each sBody In doc.ComponentDefinition.SurfaceBodies
' Create a part for each surfacebody
Dim prt As PartDocument
prt = ThisApplication.Documents.Add(kPartDocumentObject)
Dim dpcs As DerivedPartComponents
dpcs = prt.ComponentDefinition.ReferenceComponents.DerivedPartComponents
Dim dpd As DerivedPartUniformScaleDef
dpd = dpcs.CreateUniformScaleDef(doc.FullDocumentName)
' Exclude the other solid bodies
Dim dpe As DerivedPartEntity
For Each dpe In dpd.Solids
If Not dpe.ReferencedEntity Is sBody Then
dpe.IncludeEntity = False
End If
Next
For Each dpe In dpd.Sketches
dpe.IncludeEntity = False
Next
Call dpcs.Add(dpd)
' Save using prefix and solid body's name
Call prt.SaveAs(path + prefix + sBody.Name + ".ipt", False)
' Place an instance of it inside the assembly
Dim mx As Matrix
mx = ThisApplication.TransientGeometry.CreateMatrix()
Call assy.ComponentDefinition.Occurrences.AddByComponentDefinition(prt.ComponentDefinition, mx)
' Close the part
Call prt.Close
Next
' Save the assembly
Call assy.SaveAs(path + prefix + "001" + ".iam", False)
Many thanks in advance, I hope this mystery can be solved.