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?
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.
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...
Tot zover mij, sorry. 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.