This is an interesting idea for a macro. First, I wouldn't recommend trying to modify the feature tree while a feature's selections are accessed, since the model is in a roll back state. Second, IModelDocExtension::SelectByID2 shouldn't be used to select faces, and I wouldn't recommend using to ever select anything that doesn't have a name (such as faces, edges, vertices, etc).
The easiest way to tackle this would probably be to simply get the faces owned by the circular pattern feature, that way you can avoid accessing the feature data. This won't let you get the pattern seed faces, however, so you would need to select that feature as well. This macro will do that:
Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swFeat As SldWorks.Feature Dim swFace As SldWorks.Face2 Dim swSurf As SldWorks.Surface Dim swEnt As SldWorks.Entity Dim vFaces As Variant Dim colSelFeats As New Collection Dim i As Integer, j As Integer Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager For i = 1 To swSelMgr.GetSelectedObjectCount2(-1) If TypeOf swSelMgr.GetSelectedObject6(i, -1) Is Feature Then colSelFeats.Add swSelMgr.GetSelectedObject6(i, -1) End If Next i swModel.ClearSelection2 True For i = 1 To colSelFeats.Count Set swFeat = colSelFeats.Item(i) vFaces = swFeat.GetFaces If IsEmpty(vFaces) = False Then For j = 0 To UBound(vFaces) Set swFace = vFaces(j) Set swSurf = swFace.GetSurface If swSurf.IsCylinder Then Set swEnt = vFaces(j) swEnt.Select False swModel.InsertAxis2 True End If Next j End If Next i End Sub