Voici une macro qui recharge le document actif si c'est une piece, ou le composant selectionné dans le cas d'une assemblage
Option Explicit
Dim swApp As SldWorks.SldWorks
Sub main()
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim swAss As SldWorks.AssemblyDoc
Dim nRetVal As swComponentReloadError_e
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Select Case swModel.GetType
Case swDocumentTypes_e.swDocPART
Set swPart = swModel
swModel.ForceReleaseLocks
nRetVal = swModel.ReloadOrReplace(False, swModel.GetPathName, True)
Case swDocumentTypes_e.swDocASSEMBLY
' On test si un composant est selectionné
Dim blUnSelected As Boolean
Set swAss = swModel
Dim swSelectionMgr As SldWorks.SelectionMgr
Set swSelectionMgr = swModel.SelectionManager
If swSelectionMgr.GetSelectedObjectCount2(0) = 0 Then blUnSelected = True
If swSelectionMgr.GetSelectedObjectType3(1, 0) <> swSelectType_e.swSelCOMPONENTS Then blUnSelected = True
If blUnSelected Then
MsgBox "Veuillez selectionner un composant", vbInformation
Exit Sub
End If
' On recupere le composant selectionné
Dim swComponent As SldWorks.Component2
Set swComponent = swSelectionMgr.GetSelectedObject6(1, 0)
' On le recharge
Dim swDoc As SldWorks.ModelDoc2
Set swDoc = swComponent.GetModelDoc2
swDoc.ForceReleaseLocks
nRetVal = swDoc.ReloadOrReplace(False, UCase(swDoc.GetPathName), True)
End Select
' Message de comfirmation
Dim stErr As Variant
stErr = Array("Okay", "Access error", "Version error", "Modified not reloaded error", "Invalid option", _
"File not saved error", "Invalid component error", "Unexpected error", "Component light weight error", _
"File doesnt exist error", "File invalid or same name error", "Document has no view", "Document already opened error", _
"Document event error", "Document not changed", "Reload cancel")
MsgBox CStr(stErr(nRetVal))
' ' Ou on le remplace
' Dim stPath As String: stPath = ...
' Dim stConfigName As String: stConfigName = ...
' Dim blRet As Boolean
' blRet = swAss.ReplaceComponents(stPath, stConfigName, True, True)
'
' If blRet Then
' MsgBox "Remplacement réussi", vbInformation
' Else
' MsgBox "Remplacement échoué", vbExclamation
' End If
End Sub
replace.zip