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
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 @treza88zou 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. ;-) ;-)
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
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
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