Insérer une nomenclature via macro VBA

Bonjour à toutes et tous,
Je travaille sur solidworks 2021 et afin de gagner du temps sur certaines tâches, je cherche à inserer une nomenclature sur un plan d’ensemble via une macro VBA.
J’ai une bonne base mais il y a un soucis, ce code ne fonctionne pas vraiment soit ça insert la nom, mais j’ai code erreur 13 qui apparait, soit ça ne l’insert pas et j’ai le code erreur 91. Pouvez-vous m’aidez ?

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swActiveView As Object
Dim swBOMTable As Object
'Dim swBOMAnnotation As SldWorks.BomFeature


Dim swModelDocExt           As SldWorks.ModelDocExtension
Dim swDrawing               As SldWorks.DrawingDoc
Dim swView                  As SldWorks.View
Dim swBOMAnnotation         As SldWorks.BomTableAnnotation
Dim swBOMFeature            As SldWorks.BomFeature
Dim swNote                  As SldWorks.Note
Dim BomBalloonParams        As SldWorks.BalloonOptions

Dim AnchorType              As Long
Dim BomType                 As Long
Dim nErrors                 As Long
Dim nWarnings               As Long
Dim Configuration           As String
Dim TableTemplate           As String

Sub main()

' F5 exécution code
' F8 pas à pas

    ' Je rentre dans solidworks
Set swApp = Application.SldWorks
    ' Je rentre dans mon doc actif
Set Part = swApp.ActiveDoc

'boolstatus = Part.ActivateView("Vue de mise en plan1")
    ' Je sélectionne ma vue
boolstatus = Part.Extension.SelectByID2("Vue de mise en plan1", "DRAWINGVIEW", 0.121991020408163, 0.145772448979592, 0, False, 0, Nothing, 0)
    ' La vue séléctionnée est activée
Set swActiveView = Part.ActiveDrawingView

AnchorType = swBOMConfigurationAnchor_TopLeft
BomType = swBomType_e.swBomType_TopLevelOnly
Configuration = "Défaut"
TableTemplate = "X:\Biblio\BIBLIO MECA\BASE DE DONNEES\NOMENCLATURES\NOM_ROBAUT.sldbomtbt"
'Hidden = False
'IndentedNumberingType = swNumberingType_Flat
' J'insère une table
swBOMAnnotation = swActiveView.InsertBomTable4(False, 0, 0, AnchorType, BomType, Configuration, TableTemplate, False, swNumberingType_Detailed, False)

boolstatus = Part.EditRebuild3()
boolstatus = Part.ActivateSheet("Feuille1")
End Sub

Bonjour et bienvenue;

Quelques erreurs sur votre macro (probablement issue d’un enregistrement ?):

inspirez-vous de l’exemple ci dessous: Insérer une nomenclature via macro VBA

'-----------------------------------------------------
' Preconditions: Open a drawing document and select
' a drawing view.
'
' Postconditions:
' 1. Inserts a BOM at the anchor point, if the
'    drawing view does not already contain a BOM.
' 2. Examine the drawing and FeatureManager design tree.
'-----------------------------------------------------
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeatMgr As SldWorks.FeatureManager
Dim swView As SldWorks.View
Dim swBomAnn As BomTableAnnotation
Dim swBomFeat As SldWorks.BomFeature
Dim AnchorType As Long
Dim BomType As Long
Dim Configuration As String
Dim TableTemplate As String
Dim Names As Variant
Dim Visible As Variant
Dim boolstatus As Boolean

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swFeatMgr = swModel.FeatureManager    

    ' Get selected drawing view
    Set swView = swSelMgr.GetSelectedObject6(1, 0)
    AnchorType = swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_BottomLeft
    BomType = swBomType_e.swBomType_TopLevelOnly
    Configuration = ""
    TableTemplate = ""    

    ' Insert BOM table
    Set swBomAnn = swView.InsertBomTable2(True, 0.4, 0.3, AnchorType, BomType, Configuration, TableTemplate)    

    swModel.ClearSelection2 True    

    ' Because BOM type is swBomType_TopLevelOnly,
    ' then work with BomFeature to get and set configurations
    Set swBomFeat = swBomAnn.BomFeature
    Names = swBomFeat.GetConfigurations(False, Visible)
    Visible(0) = True
    boolstatus = swBomFeat.SetConfigurations(True, Visible, Names)    

    ' Update FeatureManager design tree
    swFeatMgr.UpdateFeatureTree

End Sub

ou encore avec d’autres exemples:

Cordialement.

2 « J'aime »