We use assemblys between 1000 and 2000 parts with little problems here is a macro that will recurse the assembly tree and unsupress all parts, let me know how it works I didn't do too much testing.
Dim swApp As SldWorks.SldWorks Dim Assy As SldWorks.ModelDoc2 Dim Config As SldWorks.Configuration
Sub main() Dim rootComp As Component2
Set swApp = Application.SldWorks Set Assy = swApp.ActiveDoc Set FeatMan = Assy.FeatureManager Set Config = Assy.GetActiveConfiguration Set rootComp = Config.GetRootComponent
RecurseAssy rootComp, 0
End Sub
Sub RecurseAssy _ ( _ swComp As SldWorks.Component2, _ nLevel As Long _ )
Dim vChildComp As Variant
Dim swChildComp As SldWorks.Component2
Dim swCompConfig As SldWorks.Configuration
Dim sPadStr As String
Dim i As Long
Dim SplitStr As Variant
Dim NewComp As Boolean
For i = 0 To nLevel - 1
sPadStr = sPadStr + " "
Next i
vChildComp = swComp.GetChildren
For i = 0 To UBound(vChildComp)
Set swChildComp = vChildComp(i) Debug.Print swChildComp.Name2 superr = swChildComp.SetSuppression2(swComponentResolved) Select Case superr Case swSuppressionError_e.swSuppressionBadComponent Debug.Print "swSuppressionBadComponent" Case swSuppressionError_e.swSuppressionBadState Debug.Print "swSuppressionBadState" Case swSuppressionError_e.swSuppressionChangeFailed Debug.Print "swSuppressionChangeFailed" Case swSuppressionError_e.swSuppressionChangeOk 'Debug.Print "swSuppressionChangeOk" End Select
RecurseAssy swChildComp, nLevel + 1
Next i
End Sub
paste this into a new macro and hit play on the main sub