SolidWorks BOM vba exporteren naar Excel

Hallo allemaal,

Hoe kunnen we een stuklijst exporteren naar Excel in vba, omdat ik mijn materiaalstroom op Excel werk die ik exporteer naar een flowsoftware.

Maar ik wil de stuklijst exporteren naar een Excel-bestand of een csv waarmee ik mijn stuklijst rechtstreeks in mijn flow-software kan importeren.

Of nog beter om de informatie van de nomenclatuur op te halen zonder deze noodzakelijkerwijs te maken, d.w.z. aanduiding, lengte, breedte, dikte, nummer plus een of twee eigenschappen van een formulier, om deze in Excel te importeren

Bij voorbaat dank

Niemand voor advies over mijn vraag, maar misschien ben ik niet duidelijk in mijn vraag?

Aarzel niet om me te vragen of ik niet duidelijk ben geweest.

Hallo @ allemaal

Dit bericht volgt op aflevering 1 seizoen 1 hieronder.
https://www.lynkoa.com/forum/solidworks/ins%C3%A9rer-mise-en-plan-avec-nomenclature-solidworks

Kijk vooral naar de laatste berichten, het gaat om het creëren van een automatische functie die SW tot nu toe blijkbaar niet biedt. Het ideaal voor @treza88 zou zijn om het Excel-bestand rechtstreeks te genereren zonder de nomenclatuur in het ASM of  in het lid van het Europees Parlement te maken, die hij in dit stadium niet gebruikt.

Start  een stuk software dat een stuklijst in Excel genereert zonder dat deze in de ASM of in de MEP verschijnt.   ;-)  ;-)

Vriendelijke groeten

1 like

Hallo
Er zijn verschillende manieren om de stuklijst te exporteren met behulp van macro's.
Voor het tekenen van een onderdeelassemblage:

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 likes

Voor een tekening van een snijlijst:

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 likes

Hallo

Hoe doe je dat voor een algemene tabel?

Ik heb een stukje code  gevonden dat werkt om de tabel te maken [ swtable = swDrawing.InsertTableAnnotation2(False, 0, 0, swBOMConfigurationAnchor_TopLeft, Templatetable, 4, 2)]   

aan de andere kant haalt het in mijn gemaakte Excel-bestand de formule op van de eigenschap [$PRP:"SW-File Name"[ maar niet de waarde terwijl op de tabel op SW is correct (zie afdrukken, scherm)  en ik kan de code niet wijzigen om de algemene gemaakte tabel te verwijderen.

Dank u voor uw hulp.

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