Mannnnnnn!! You're going to be very disappointed with AutoBalloon. There is no way, as far as I know, to ballon one level of the assembly with native API calls. I think SOLIDWORKS will balloon everything. I ran into further problems with I autoballoon large assemblies (it takes forever).
However, there are multiple workarounds for your problems:
Slow and balloon/bom compliant: Autballoon the view and then delete the balloons from a lower level.
Fast and no balloon/bom compliance: Construct your own BOM in memory and then add note annotation to the top level visible entities in the view. This is fast.
I have an autoballoon macro that doesn't have this problem. It uses the older AutoBalloon3. Give that a try and see if it behaves differently.
So i tried this
vNotes = swModel.AutoBalloon3(swDetailingBalloonLayout_Square, True, swBS_Circular, swBF_Tightest, swBalloonTextItemNumber, -1, -1, -1, -1)
But it still gives me the same thing. Are your settings in your macro different then mine?
I'm surprised you're not getting an error on that, since three of the last four arguments are string type (UpperText, LowerText, and Layername).
Here's what I'm using:
vNoteArr = swDwgDoc.AutoBalloon3(swDetailingBalloonLayout_Square, True, swBS_Circular, _
swBF_Tightest, swBalloonTextItemNumber, "", swBalloonTextQuantity, "", "-None-")