Sub Main oADoc = ThisDoc.Document Dim oOccs As ComponentOccurrences = oADoc.ComponentDefinition.Occurrences RecurseComponents(oOccs) End Sub Dim oADoc As AssemblyDocument 'shared/available to both routines now Sub RecurseComponents(oComps As ComponentOccurrences) If IsNothing(oComps) OrElse oComps.Count = 0 Then Exit Sub For Each oComp As ComponentOccurrence In oComps If oComp.Suppressed Then Try oComp.Unsuppress Catch e As Exception Logger.Error("Error Unsuppressing component named " & oComp.Name & _ vbCrLf & e.Message & vbCrLf & e.StackTrace) Continue For 'can not process SubOccurrences of suppressed component End Try oADoc.Update2(True) 'update after un-suppressing component, to refresh memory End If If oComp.SubOccurrences.Count > 0 Then RecurseComponents(oComp.SubOccurrences) End If Next End Sub