Einfügen einer Stückliste über das VBA-Makro

Hallo an alle
Ich arbeite an SOLIDWORKS 2021 und um bei bestimmten Aufgaben Zeit zu sparen, möchte ich über ein VBA-Makro eine Stückliste in einen Übersichtsplan einfügen.
Ich habe eine gute Basis, aber es gibt ein Problem, dieser Code funktioniert nicht wirklich, entweder fügt er den Namen ein, aber ich habe den Fehlercode 13, der angezeigt wird, oder er wird nicht eingefügt und ich habe den Fehlercode 91. Kannst du mir helfen?

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

Hallo und herzlich willkommen;

Einige Fehler in Ihrem Makro (wahrscheinlich von einer Aufnahme?):

Lassen Sie sich von dem folgenden Beispiel inspirieren: Einfügen einer Stückliste über ein VBA-Makro

'-----------------------------------------------------
' 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

oder mit anderen Beispielen:

Herzliche Grüße.

2 „Gefällt mir“