Macro-export stuklijst naar Excel

Hoi allemaal

Ik ben een beginner in macro, we gebruiken Solidworks op de BE en ik wil een aantal taken automatiseren. Momenteel exporteer ik de stuklijsten naar Excel sinds de tekening en integreer ik ze in ons ERP. Ik wil een macro om de nomenclatuur te exporteren met dezelfde naam als de tekening en in dezelfde map.

Ik heb het geprobeerd via Chatgpt onmogelijk.

Ik heb wat onderzoek gedaan, maar ik kan niet vinden wat ik zoek, heeft iemand een macro die vergelijkbaar is met mijn verzoek in hun gereedschapskist?

Bekijk dit onderwerp:

Of:

En om deze af te maken:

Edit: met de zoekfunctie van het forum zijn de onderwerpen ook vindbaar en zonder dat je een praatje hoeft te maken! :wink:

3 likes

Bedankt voor je snelle antwoord, ik had deze onderwerpen gezien, maar het eerste onderwerp integreert een nomenclatuur, exporteert deze en verwijdert deze. Ik wil dat de macro de nomenclatuur selecteert die in de tekening staat en deze exporteert naar xlsx.

Hallo @Jérémy_Guillon ;
U moet nauwkeuriger zijn in uw verzoeken...

  • De solidworks versie
  • De Excel-versie
  • de naam van de , of vellen tekeningen
  • De naam en het type van de nomenclaturen...
  • de locatie van de bestemming (dynamisch of statisch?)…

(bij twijfel exporteert de onderstaande macro alle stuklijsten die in een tekening zijn gevonden naar een *.xlsx bestand ( C:\Temp\Nomenclature_MiseEnPlan.xlsx)

Sub ExportNomenclatureMiseEnPlan()
    Dim swApp As Object
    Dim swDraw As Object
    Dim swTable As Object
    Dim swSheet As Object
    Dim swView As Object
    Dim swTableAnnotation As Object
    Dim excelApp As Object
    Dim wb As Object
    Dim ws As Object
    Dim i As Long, j As Long
    Dim rowCount As Long, colCount As Long
    
    ' Initialiser SolidWorks
    Set swApp = GetObject(, "SldWorks.Application")
    Set swDraw = swApp.ActiveDoc
    
    If swDraw Is Nothing Then
        MsgBox "Aucune mise en plan active."
        Exit Sub
    End If
    
    ' Créer une instance Excel
    Set excelApp = CreateObject("Excel.Application")
    excelApp.Visible = True
    Set wb = excelApp.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ' Localiser la table BOM dans la mise en plan
    ' Supposons qu'il y ait une seule table BOM
    For Each swTableAnnotation In swDraw.GetTableAnnotations
        If swTableAnnotation.Type = 0 Then ' 0 pour BOM
            Set swTable = swTableAnnotation
            Exit For
        End If
    Next
    
    If swTable Is Nothing Then
        MsgBox "Aucune table de nomenclature trouvée."
        Exit Sub
    End If
    
    ' Récupérer le nombre de lignes et colonnes
    rowCount = swTable.RowCount
    colCount = swTable.ColumnCount
    
    ' Parcourir la table et exporter
    For i = 0 To rowCount - 1
        For j = 0 To colCount - 1
            ws.Cells(i + 1, j + 1).Value = swTable.Text(i, j)
        Next j
    Next i
    
    ' Enregistrer le fichier Excel
    Dim savePath As String
    savePath = "C:\Temp\Nomenclature_MiseEnPlan.xlsx"
    wb.SaveAs savePath
    
    ' Nettoyer
    wb.Close
    excelApp.Quit
    MsgBox "Export terminé : " & savePath
End Sub

Persoonlijke noot:
Je leert nooit programmeren als je het rechtstreeks aan een AI vraagt. Houd er rekening mee dat het 10 keer moeilijker is om een code te lezen dan om deze te schrijven.

1 like

Hallo Maclane,

Het is waar dat ik niet zo gewend ben om op forums te gaan.
We zijn in SW 2023 SP5.0, voor excel versie 16.0.
Normaal gesproken heet het blad PLAN en de stuklijst BOM1
Voor de locatie en naam van het bestand wil ik dezelfde naam als het sw-bestand en wordt het opgeslagen in de bronmap van de tekening.

Ik heb de voorgestelde macro getest en ik heb een debug op dit niveau:

Voor elke swTableAnnotation In swDraw.GetTableAnnotations

Ik weet dat dat het probleem is als ik wat testen heb gedaan.

Ik begrijp het voor AI, ik zou graag willen weten hoe ik moet coderen en leren, maar ik ben de enige die taken binnen de kantoren wil automatiseren via Macro SW of gewoon door Excel-formules. (de anderen geven er de voorkeur aan om taken te typen en te herhalen en fouten te maken) de persoon met wie ik begon en die me de VBA liet zien, is verdwenen en ik ben de enige in de BE,... Dus ik probeer het alleen te doen als ik wat tijd heb. En ik geef toe dat het gemakkelijk is zodra je vastloopt op een of andere formule... :wink:

Tot zover mij, sorry. :upside_down_face:
De GetTableAnnotations-methode bestaat niet rechtstreeks op de " *.swdrum"- bestanden, maar alleen op de MEP-sheets  .
U moet eerst elk blad ophalen via GetSheets en vervolgens op elk blad GetTableAnnotations gebruiken om toegang te krijgen tot de tabellen
voorbeeld:
https://help.solidworks.com/2022/english/api/sldworksapi/Get_Table_Annotation_and_Contents_Example_VB.htm

Maar ik heb niet echt tijd om de macro te maken... Dat gezegd hebbende, met de voorbeelden van @sbadenis en een beetje oefening, zou het niet onoverkomelijk moeten zijn.