VBA interface "component2" failing to load on some assemblies with multiple configurations

I've been writing a script to traverse through our assemblies and run a bunch of different subroutines. I've been repeatedly encountering the same frustrating issue during the traverse that I can't seem to wrap my head around and wonder if it's a bug in SolidWorks. I've attached a much simplified version of the code that shows the heart of the issue.

 

The line of code that fails is "Set swModel = swComp.GetModelDoc2". For some reason during the traverse some components seem to be loaded incorrectly which makes this line of code fail. When this happens, "swComp.GetSuppression2" reports -1, which according to the documentation shouldn't be possible. I assume that many if not all other members of swComp would also return incorrect values. Somehow it seems that the swComp variable is loaded incorrectly which makes it impossible to work with.

 

During debugging, if I browse to the component that is failing in the tree and select it, then it no longer returns a -1 for .GetSuppression2 and I can get the modelDoc for it. This fixes the problem. However If I am to run "bool = modelCustomPropMgr.Get6("AnyPRPName", False, val, resolvedVal, wasResolved, True)" on an inactive configuration of that assembly, the component then enters into this bad state again making it unusable.

 

This only seems to happen to assembly files with multiple configurations. We've found at least 100 assemblies in our vault that have this issue in the past few weeks and constantly having to stop the code and click around in the tree (rebuild all configurations of the assembly also works) to fix the problem is not a good solution.

 

Long story short, it's very frustrating that the component2 is not getting set correctly. Does anyone know what is going on here and be able to help?

 

Option Explicit

Public boolDoNothingTraverseSuccessful As Boolean
Public skipRemainingChildren As Boolean

Sub topLevelDoNothingTraverse()
    Dim swModel As ModelDoc2
    
    If swApp Is Nothing Then Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    swModel.ResolveAllLightWeightComponents (False) 'resolve
    
    boolDoNothingTraverseSuccessful = True 'iniitialize boolean to true
    
    Debug.Print "Starting-------------------------------------------------------------------"
    
    Call doNothingTraverse2(swModel.GetActiveConfiguration.GetRootComponent3(True)) 'call do nothing traverse
    
    'give message box of if it was successful or not
    If boolDoNothingTraverseSuccessful = True Then
        MsgBox ("Do Nothing Traverse Successfull")
    Else
        MsgBox ("Do Nothing Traverse Failed")
    End If
End Sub

Sub doNothingTraverse2(swComp As SldWorks.Component2)
    Dim swModel As ModelDoc2
    Dim i As Integer
    Dim vChildComp As Variant
    Dim swChildComp As SldWorks.Component2
    
    If swComp.ExcludeFromBOM = True Then GoTo endSub
    If swComp.GetSuppression2 = swComponentSuppressed Then GoTo endSub 'skip suppressed components
    If swComp.GetSuppression2 = -1 Then 'no idea why this is happening sometimes.
        'Why is this failing? Can't set swmodel from an swcomp that is in this weird state
        'report an issue occurred then skip out of this child/sub
        Debug.Print "Failed state for   -   " & swComp.Name2 & "   -   " & swComp.GetPathName
        boolDoNothingTraverseSuccessful = False
        GoTo endSub
    End If
    
    Set swModel = swComp.GetModelDoc2 'Now that we've checked that this component isn't in this weird state, we can confidently set the swModel
    
    'Traverse through this model's children
    If swModel.GetType() = swconst.swDocASSEMBLY Then 'can't traverse if it's not an assembly
        vChildComp = swComp.GetChildren
        For i = 0 To UBound(vChildComp)
            Set swChildComp = vChildComp(i)
            Call doNothingTraverse2(swChildComp)
        Next i
    End If
    
endSub:
End Sub