Try putting a valid variable into the BodiesInfo argument:
Dim myInfo as Variant
varr = swComp.GetBodies3(SwConst.swBodyType_e.swAllBodies, myInfo)
Just an idea. Don't know if it will work.
No luck. Thanks for the guess though
Something that I didn't realize until just now is that all the ones that are returning empty are subassemblies
The fine print for GetSelectedObjectsComponent4 (basically the updated version of GetSelectedObjectsComponent) :
"Gets the selected component in an assembly or drawing."
It doesn't seem to work on multi-body parts but does not give any error. Odd.