How to get Macro to check an assembly has fully loaded before proceeding?

I have the following code from this link. It's used to run macro when the file is opened.

Run VBA macro on model load using macro feature and SOLIDWORKS API 

This problem is that its running the Sub 'OnModelLoad' before the model is fully loaded.

The 'OnModelLoad' sub opens a form with a list of all configurations, but as this runs before the model has finished loading it is kicking up a macro error response.

Anyway of fixing this?

Thanks

Dim swApp As Object<br>Const EMBED_MACRO_FEATURE As Boolean = True<br>Const BASE_NAME As String = "ModelLoadWatcher"<br><br>Dim HandledModels As Collection<br><br>Sub main()<br><br>    Dim swApp As SldWorks.SldWorks<br>    Set swApp = Application.SldWorks<br><br>    Dim swModel As SldWorks.ModelDoc2<br><br>    Set swModel = swApp.ActiveDoc<br><br>    Dim UserConfirmEmbed As Integer<br><br>    If Not swModel Is Nothing Then<br><br>        'USER PROCEED CONFIRMATION REQUEST<br>        UserConfirmEmbed = MsgBox("Are you ready to Embed Macro?", vbYesNo + vbQuestion, "Confirmation Request")<br>        If UserConfirmEmbed = vbYes Then<br><br>        Dim curMacroPath As String<br>        curMacroPath = swApp.GetCurrentMacroPathName<br><br>        Dim vMethods(8) As String<br>        Dim moduleName As String<br><br>        GetMacroEntryPoint swApp, curMacroPath, moduleName, ""<br><br>        vMethods(0) = curMacroPath: vMethods(1) = moduleName: vMethods(2) = "swmRebuild"<br>        vMethods(3) = curMacroPath: vMethods(4) = moduleName: vMethods(5) = "swmEditDefinition"<br>        vMethods(6) = curMacroPath: vMethods(7) = moduleName: vMethods(8) = "swmSecurity"<br><br>        Dim opts As swMacroFeatureOptions_e<br><br>        If EMBED_MACRO_FEATURE Then<br>            opts = swMacroFeatureOptions_e.swMacroFeatureEmbedMacroFile<br>        Else<br>            opts = swMacroFeatureOptions_e.swMacroFeatureByDefault<br>        End If<br><br>        Dim swFeat As SldWorks.Feature<br>        Set swFeat = swModel.FeatureManager.InsertMacroFeature3(BASE_NAME, "", vMethods, _<br>            Empty, Empty, Empty, Empty, Empty, Empty, _<br>            Empty, opts)<br><br>        If swFeat Is Nothing Then<br>            MsgBox "Failed to create model load watcher"<br>        End If<br><br>        'USER CONFIRMATION REQUEST CONTINUED...<br>        Else<br>            MsgBox "Macro Embedding Skipped"<br><br>                OnModelLoad swModel<br>                    End If<br><br>    Else<br>        MsgBox "Please open model"<br>    End If<br><br>End Sub<br><br>Sub GetMacroEntryPoint(app As SldWorks.SldWorks, macroPath As String, ByRef moduleName As String, ByRef procName As String)<br><br>    Dim vMethods As Variant<br>    vMethods = app.GetMacroMethods(macroPath, swMacroMethods_e.swMethodsWithoutArguments)<br><br>    Dim i As Integer<br><br>    If Not IsEmpty(vMethods) Then<br><br>        For i = 0 To UBound(vMethods)<br>            Dim vData As Variant<br>            vData = Split(vMethods(i), ".")<br><br>            If i = 0 Or LCase(vData(1)) = "main" Then<br>                moduleName = vData(0)<br>                procName = vData(1)<br>            End If<br>        Next<br><br>    End If<br><br>End Sub<br><br>Function swmRebuild(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant<br>    swmRebuild = True<br>End Function<br><br>Function swmEditDefinition(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant<br>    swmEditDefinition = True<br>End Function<br><br>Function swmSecurity(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant<br><br>    Dim swFeat As SldWorks.Feature<br>    Set swFeat = varFeat<br><br>    If HandledModels Is Nothing Then<br>        Set HandledModels = New Collection<br>    End If<br><br>    Dim swModel As SldWorks.ModelDoc2<br>    Set swModel = varDoc<br><br>    If Not CollectionContains(HandledModels, swModel) Then<br><br>        HandledModels.Add swModel<br>        Dim swApp As SldWorks.SldWorks<br>        Set swApp = varApp<br>        ClearCache swApp<br><br>    OnModelLoad swModel<br><br>    End If<br><br>    swmSecurity = SwConst.swMacroFeatureSecurityOptions_e.swMacroFeatureSecurityByDefault<br><br>End Function<br><br>Sub ClearCache(app As SldWorks.SldWorks)<br><br>    If Not HandledModels Is Nothing Then<br><br>        Dim vDocs As Variant<br>        vDocs = app.GetDocuments<br><br>        If Not IsEmpty(vDocs) Then<br><br>            Dim i As Integer<br><br>            For i = HandledModels.Count To 1 Step -1<br><br>                Dim swModel As SldWorks.ModelDoc2<br>                Set swModel = HandledModels(i)<br><br>                If Not ArrayContains(vDocs, swModel) Then<br>                    HandledModels.Remove i<br>                End If<br><br>            Next<br><br>        End If<br><br>    End If<br><br>End Sub<br><br>Function CollectionContains(coll As Collection, model As SldWorks.ModelDoc2) As Boolean<br><br>    Dim i As Integer<br><br>    For i = 1 To coll.Count()<br>        If coll(i) Is model Then<br>            CollectionContains = True<br>            Exit Function<br>        End If<br>    Next<br><br>    CollectionContains = False<br><br>End Function<br><br>Function ArrayContains(arr As Variant, model As SldWorks.ModelDoc2) As Boolean<br><br>    Dim i As Integer<br><br>    If Not IsEmpty(arr) Then<br>        For i = 0 To UBound(arr)<br>            Dim thisModel As SldWorks.ModelDoc2<br>            Set thisModel = arr(i)<br>            If thisModel Is model Then<br>                ArrayContains = True<br>                Exit Function<br>            End If<br>        Next<br>    End If<br><br>    ArrayContains = False<br><br>End Function<br><br>Sub OnModelLoad(model As SldWorks.ModelDoc2)<br>    HandlerModule.HandlerMain model<br>End Sub<br><span class="line-numbers-rows"><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span></span>
SolidworksApi/macros