Makro Stückliste nach Excel exportieren

Hallo ihr alle

Ich bin ein Anfänger in Sachen Makros, wir verwenden Solidworks an der BE und ich möchte einige Aufgaben automatisieren. Aktuell exportiere ich die Stücklisten seit der Zeichnung nach Excel und integriere sie in unser ERP. Ich hätte gerne ein Makro, um die Nomenklatur mit dem gleichen Namen wie die Zeichnung und im selben Ordner zu exportieren.

Ich habe es über Chatgpt unmöglich versucht.

Ich habe etwas recherchiert, kann aber nicht finden, wonach ich suche, hat jemand ein Makro, das meiner Anfrage ähnelt, in seiner Toolbox?

Schauen Sie sich dieses Thema an:

Oder:

Und um das hier zu beenden:

Edit: Mit der Suche im Forum sind die Themen auch auffindbar und das ohne dass ein Chat notwendig ist! :wink:

3 „Gefällt mir“

Vielen Dank für Ihre schnelle Antwort, ich hatte diese Themen gesehen, aber das erste Thema integriert eine Nomenklatur, exportiert sie und löscht sie. Ich möchte, dass das Makro die Nomenklatur auswählt, die sich in der Zeichnung befindet, und sie nach xlsx exportiert.

Hallo @Jérémy_Guillon ;
Sie sollten in Ihren Anfragen präziser sein...

  • Die Solidworks-Version
  • Die Excel-Version
  • den Namen des oder von Zeichnungsblättern
  • Der Name und die Art der Nomenklaturen...
  • Der Zielort (dynamisch oder statisch?)…

(Im Zweifelsfall exportiert das folgende Makro alle in einer Zeichnung gefundenen Stücklisten in eine *.xlsx-Datei ( 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

Persönliche Anmerkung:
Programmieren lernt man nie, wenn man eine KI direkt fragt. Denken Sie daran, dass es 10-mal schwieriger ist, einen Code zu lesen , als ihn zu schreiben.

1 „Gefällt mir“

Hallo Maclane,

Es stimmt, dass ich es nicht allzu gewohnt bin, in Foren zu gehen.
Wir sind in SW 2023 SP5.0, für Excel Version 16.0.
Normalerweise heißt das Blatt PLAN und die Stückliste wird BOM1 genannt
Für den Speicherort und den Namen der Datei möchte ich den gleichen Namen wie die sw-Datei haben und sie wird im Quellordner der Zeichnung gespeichert.

Ich habe das vorgeschlagene Makro getestet und habe ein Debuggen auf dieser Ebene:

Für jede swTableAnnotation in swDraw.GetTableAnnotations

Ich weiß, dass das das Problem ist, wenn ich einige Tests durchgeführt habe.

Ich verstehe KI, ich würde gerne wissen, wie man programmiert und lernt, aber ich bin der einzige, der Aufgaben in den Büros über Macro SW oder einfach durch Excel-Formeln automatisieren möchte. (die anderen ziehen es vor, Aufgaben zu tippen und zu wiederholen und Fehler zu machen) die Person, mit der ich angefangen habe und die mir die VBA gezeigt hat, ist weg und ich bin die einzige im BE,... Also versuche ich, es alleine zu machen, wenn ich ein wenig Zeit habe. Und ich gebe zu, dass es einfach ist, sobald man bei der einen oder anderen Formel nicht weiterkommt... :wink:

So viel zu mir, sorry. :upside_down_face:
Die GetTableAnnotations-Methode ist nicht direkt in den "*.swdrum" -Dateien vorhanden, sondern nur in den MEP-Blättern  .
Sie müssen zuerst jedes Blatt über GetSheets abrufen und dann auf jedem Blatt GetTableAnnotations verwenden, um auf die Tabellen zuzugreifen
Beispiel:
https://help.solidworks.com/2022/english/api/sldworksapi/Get_Table_Annotation_and_Contents_Example_VB.htm

Aber ich habe nicht wirklich Zeit, das Makro zu erstellen... Mit den Beispielen von @sbadenis und ein wenig Übung sollte es jedoch nicht unüberwindbar sein.