SolidWorks Stückliste vba Export nach Excel

Hallo an alle

Wie können wir eine Stückliste nach Excel in VBA exportieren, da ich meinen Materialfluss in Excel arbeite, den ich in eine Flusssoftware exportiere.

Ich möchte die Stückliste jedoch in eine Excel-Datei oder eine CSV-Datei exportieren, die es mir ermöglicht, meine Stückliste direkt in meine Flow-Software zu importieren.

Oder noch besser, um die Informationen der Nomenklatur abzurufen, ohne sie unbedingt zu erstellen, d.h. Bezeichnung, Länge, Breite, Dicke, Anzahl plus ein oder zwei Eigenschaften eines Formulars, um sie in Excel zu importieren

Vielen Dank im Voraus

Niemand für Ratschläge zu meiner Frage, aber vielleicht bin ich in meiner Anfrage nicht klar?

Zögern Sie nicht, mich zu fragen, wenn ich nicht klar war.

Hallo @ alle

Dieser Beitrag folgt auf Folge 1 Staffel 1 unten.
https://www.lynkoa.com/forum/solidworks/ins%C3%A9rer-mise-en-plan-avec-nomenclature-solidworks

Schauen Sie sich vor allem die letzten Beiträge an, es geht darum, eine automatische Funktion zu erstellen, die SW anscheinend bisher nicht bietet. Ideal für @treza88 wäre es, die Excel-Datei direkt zu generieren, ohne die Nomenklatur entweder im ASM oder  im MEP zu erstellen, die er zu diesem Zeitpunkt nicht verwendet.

Starten Sie  eine Software, die eine Stückliste in Excel erstellt, ohne dass sie im ASM oder im MEP erscheint.   ;-)  ;-)

Herzliche Grüße

1 „Gefällt mir“

Hallo
Es gibt mehrere Möglichkeiten, die Stückliste nach Makros zu exportieren .
Für die Zeichnung einer Teilebaugruppe:

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swActiveView As SldWorks.View
    Dim swBOMTable As SldWorks.BomTableAnnotation
    Dim Config As String
    Dim TemplateName As String

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swActiveView = swDraw.GetFirstView
    Set swActiveView = swActiveView.GetNextView
    Config = swActiveView.ReferencedConfiguration
    TemplateName = "C:\Program Files\SolidWorks Corp\SolidWorks\lang\english\bom-standard.sldbomtbt"

    Set swBOMTable = swActiveView.InsertBomTable2(False, 0, 0.2, swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, swBomType_e.swBomType_Indented, Config, TemplateName)
    WriteBom "C:\Temp\myBom.xls", swBOMTable
    
    ' delete table
    Dim swBOMFeat As SldWorks.BomFeature
    Set swBOMFeat = swBOMTable.BomFeature
    Dim swFeat As SldWorks.Feature
    Set swFeat = swBOMFeat.GetFeature
    swFeat.Select2 False, -1
    swModel.EditDelete
    
End Sub

Sub WriteBom(FilePath As String, table As SldWorks.TableAnnotation)
    Dim N As Integer
    N = FreeFile
    Open FilePath For Output As #N
    Dim i As Integer
    Dim j As Integer
    Dim myArray() As Variant
    ReDim myArray(table.ColumnCount - 1)
    For i = 0 To table.RowCount - 1
        For j = 0 To table.ColumnCount - 1
            myArray(j) = table.Text(i, j)
        Next
        Print #N, Join(myArray, vbTab)
    Next
    Close #N
End Sub

 

2 „Gefällt mir“

Für das Zeichnen einer Schnittliste:

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swActiveView As SldWorks.View
    Dim swWeldTable As SldWorks.WeldmentCutListAnnotation
    Dim Config As String
    Dim TemplateName As String

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swActiveView = swDraw.GetFirstView
    Set swActiveView = swActiveView.GetNextView
    Config = swActiveView.ReferencedConfiguration
    TemplateName = "C:\Program Files\SolidWorks Corp\SolidWorks\lang\english\cut list.sldwldtbt"

    Set swWeldTable = swActiveView.InsertWeldmentTable(False, 0, 0.2, swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft, Config, TemplateName)
    WriteBom "C:\Temp\myBom.xls", swWeldTable
    
    ' delete table
    Dim swWeldFeat As SldWorks.WeldmentCutListFeature
    Set swWeldFeat = swWeldTable.WeldmentCutListFeature
    Dim swFeat As SldWorks.Feature
    Set swFeat = swWeldFeat.GetFeature
    swFeat.Select2 False, -1
    swModel.EditDelete    
End Sub

Sub WriteBom(FilePath As String, table As SldWorks.TableAnnotation)
    Dim N As Integer
    N = FreeFile
    Open FilePath For Output As #N
    Dim i As Integer
    Dim j As Integer
    Dim myArray() As Variant
    ReDim myArray(table.ColumnCount - 1)
    For i = 0 To table.RowCount - 1
        For j = 0 To table.ColumnCount - 1
            myArray(j) = table.Text(i, j)
        Next
        Print #N, Join(myArray, vbTab)
    Next
    Close #N
End Sub

 

2 „Gefällt mir“

Hallo

Wie machen Sie das für eine allgemeine Tabelle?

Ich habe einen Codeausschnitt  gefunden, der funktioniert, um die Tabelle zu erstellen [ swtable = swDrawing.InsertTableAnnotation2(False, 0, 0, swBOMConfigurationAnchor_TopLeft, Templatetable, 4, 2)]   

Auf der anderen Seite ruft es in meiner erstellten Excel-Datei die Formel der Eigenschaft [$PRP:"SW-Dateiname"[ ab, aber nicht der Wert, während auf der Tabelle auf SW korrekt ist (siehe Druck, Bildschirm)  und ich kann den Code nicht ändern, um die erstellte allgemeine Tabelle zu löschen.

Danke für Ihre Hilfe.

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swActiveView As SldWorks.View
    Dim swWeldTable As SldWorks.WeldmentCutListAnnotation
    Dim Config As String
    Dim TemplateName As String

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swActiveView = swDraw.GetFirstView
    Set swActiveView = swActiveView.GetNextView
    Config = swActiveView.ReferencedConfiguration
    Templatetable = "C:\test article.sldtbt"

Set swTable = swDrawing.InsertTableAnnotation2(False, 0, 0, swBOMConfigurationAnchor_TopLeft, Templatetable, 4, 2)

    WriteBom "C:\Temp\mytable.xls", swTable
    
    ' delete table
    Dim swWeldFeat As SldWorks.WeldmentCutListFeature
    Set swWeldFeat = swWeldTable.WeldmentCutListFeature
    Dim swFeat As SldWorks.Feature
    Set swFeat = swWeldFeat.GetFeature
    swFeat.Select2 False, -1
    swModel.EditDelete    
End Sub

Sub WriteBom(FilePath As String, table As SldWorks.TableAnnotation)
    Dim N As Integer
    N = FreeFile
    Open FilePath For Output As #N
    Dim i As Integer
    Dim j As Integer
    Dim myArray() As Variant
    ReDim myArray(table.ColumnCount - 1)
    For i = 0 To table.RowCount - 1
        For j = 0 To table.ColumnCount - 1
            myArray(j) = table.Text(i, j)
        Next
        Print #N, Join(myArray, vbTab)
    Next
    Close #N
End Sub

 

 

 


imprim_table_generale.png