| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SPS, eine Veranstaltung am 12.11.2024
|
Autor
|
Thema: Stücklisten aus Zeichnung in Exceldatei (7742 mal gelesen)
|
gronbi Mitglied Ingenieur
Beiträge: 6 Registriert: 14.09.2004
|
erstellt am: 10. Jun. 2011 15:32 <-- editieren / zitieren --> Unities abgeben:
|
Press play on tape Ehrenmitglied Konstrukteur und sonst nix!
Beiträge: 1945 Registriert: 30.04.2007 Creo Elements Direct Modeling 17
|
erstellt am: 10. Jun. 2011 17:02 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Leo, ich habe es jetzt nicht getestet, aber Deine Anforderung hört sich so an als ob Du mit einer Makroaufzeichnung fast Deine komplette Lösung erhälst. Hast Du das schon probiert? Eventuell reicht Dir danach eine sehr einfache Anpassung für vollen Erfolg. gruß Heiko ------------------ Umstieg auf 64bit OS, was meint ihr? Plauderthread Umfrage Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gronbi Mitglied Ingenieur
Beiträge: 6 Registriert: 14.09.2004
|
erstellt am: 10. Jun. 2011 17:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, ich bin in der Sache ein Anfänger. Ich habe es mit der Aufnahme des Makros probiert, aber es klappte nicht. Ich muss die Stüli in der Zeichnung markieren und mit rechtsklick dann über "speichern unter" die Aktion ausführen. Ich glaube das Markieren und rechtskick klappt da nicht, keine Ahnung... Gruß Leo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Press play on tape Ehrenmitglied Konstrukteur und sonst nix!
Beiträge: 1945 Registriert: 30.04.2007 Creo Elements Direct Modeling 17
|
erstellt am: 11. Jun. 2011 19:18 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1434 Registriert: 20.12.2003 SolidWorks 2024 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 13. Jun. 2011 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Leo, Zitat: Original erstellt von gronbi: Hallo Zusammen,kennt jemand ein Makro, das aus einer .slddrw die dort eingefügte Solidworkstückliste in eine Exceldatei schreibt und diese Datei in einem vorgegeben Pfad ablegt? Gruß Leo
wie wäre es denn, wenn du das Pferd andersherum aufzäumst??? Mit dem Makro #5 von Andreas Müller unter http://solidworks.cad.de/mm_boerse.htm kannst du aus einer BG die gewünschten Werte in Excel einlesen... ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThoMay Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 5260 Registriert: 15.04.2007 SWX 2019 Windows 10 x64
|
erstellt am: 14. Jun. 2011 05:52 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
riesi Mitglied CAD-Admin
Beiträge: 1094 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 14. Jun. 2011 07:39 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Moin zusammen! Ich habe das mal gemacht: Man öffnet Excel und hat in SWX eine Zeichnung offen. Excel holt sich die Stückliste in ein Array und schreibt diesen dann in eine Tabelle. Dieses Makro war die Grundlage für unsere Stücklistenkopplung für PSI. Code:
Option Explicit Const swDocDRAWING = 3 Sub main() Dim swApp As Object Dim swModel As Object Dim swDraw As Object Dim swView As Object Dim swTable As Object Dim swFeat As Object Dim swBomFeat As Object Dim bRet As Boolean Dim swAnn As Object Dim nNumCol As Long Dim nNumRow As Long Dim sRowStr As String Dim sTitStr As String Dim i As Long Dim j As Long Dim intOutHandle As Integer Dim strOneLine As String Dim SWXBom() As String Dim sZelle As String Dim ArtikelSpalte As Integer Dim Mass1Spalte As Integer Dim PosSpalte As Integer Dim MengenSpalte As Integer Dim xlApp As Object Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Keine Dokumentnte geöffnet." End End If If swModel.GetType <> swDocDRAWING Then MsgBox "Das Dokument ist keine Zeichnung." End End If Set swDraw = swModel Set swView = swDraw.GetFirstView Set swTable = swView.GetFirstTableAnnotation If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Do While swTable.Type <> 2 Set swTable = swTable.GetNext If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Loop ' Debug.Print swTable.Type nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount ' Stüli auslesen For j = 0 To nNumCol - 1 sTitStr = Trim(swTable.GetColumnCustomProperty(j)) If sTitStr = "A-Nr." Then ArtikelSpalte = j 'Debug.Print sTitStr ElseIf sTitStr = "LÄNGE" Or sTitStr = "SWRohrLänge" Then Mass1Spalte = j 'Debug.Print sTitStr End If 'Debug.Print sTitStr sTitStr = Trim(swTable.Text(0, j)) If sTitStr = "Pos-Nr." Then PosSpalte = j 'Debug.Print sTitStr ElseIf sTitStr = "Menge" Then MengenSpalte = j 'Debug.Print sTitStr End If 'Debug.Print sTitStr Next j ReDim SWXBom(nNumRow, 4) For i = 1 To nNumRow - 1 SWXBom(i, 1) = swTable.Text(i, PosSpalte) 'Debug.Print SWXBom(i, 1) SWXBom(i, 2) = swTable.Text(i, ArtikelSpalte) 'Debug.Print SWXBom(i, 2) SWXBom(i, 3) = swTable.Text(i, MengenSpalte) 'Debug.Print SWXBom(i, 3) If swTable.Text(i, Mass1Spalte) <> "" Then SWXBom(i, 4) = swTable.Text(i, Mass1Spalte) If Right(SWXBom(i, 4), 2) = "mm" Then SWXBom(i, 4) = Left(SWXBom(i, 4), Len(SWXBom(i, 4)) - 2) 'Debug.Print SWXBom(i, 4) End If Next i Set swApp = Nothing Set swModel = Nothing Set swDraw = Nothing Set swView = Nothing Set swTable = Nothing Set xlApp = CreateObject("Excel.Application") For i = 1 To nNumRow - 1 For j = 1 To 4 Debug.Print SWXBom(i, j) Cells(i, j).Value = SWXBom(i, j) Next j Next i Set xlApp = Nothing End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ckoring Mitglied Ingenieur
Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 14. Jun. 2011 07:59 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
Cuprar Mitglied Konstrukteur
Beiträge: 6 Registriert: 11.02.2014
|
erstellt am: 11. Feb. 2014 21:46 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo zusammen Ich bin neu hier im Forum und auch noch ein ziemlicher Anfänger was Makros anbelangt. Auf der Suche nach einer Lösung um die SolidWorks Stüli in eine formatierte Excel Tabelle einzulesen bin ich auf auf den Code von riesi gestossen. Ich konnte Ihn soweit anpassen dass ich die komplette Stüli in Excel einlesen kann. Das einzige Problem dass ich jetzt noch habe ist, dass die Stüli direkt in der ersten Zeile eingefügt wird. Da ich einen definierten Blattkopf habe möchte ich dass die Stüli erst ab der dritten oder vierten Zeile eingefügt wird. Evtl. kann mir jemand bei diesem Befehl weiterhelfen. Sub main() Dim swApp As Object Dim swModel As Object Dim swDraw As Object Dim swView As Object Dim swTable As Object Dim swFeat As Object Dim swBomFeat As Object Dim bRet As Boolean Dim swAnn As Object Dim nNumCol As Long Dim nNumRow As Long Dim sRowStr As String Dim sTitStr As String Dim a As Long Dim j As Long Dim b As Long Dim intOutHandle As Integer Dim strOneLine As String Dim SWXBom() As String Dim sZelle As String Dim Benennung As Integer Dim Mass1Spalte As Integer Dim PosSpalte As Integer Dim MengenSpalte As Integer Dim Zeichnungsnummer As Integer Dim Hersteller As Integer Dim HerstellerSachnummer As Integer Dim ErsatzVerschleiss As Integer Dim NormTyp As Integer Dim Material As Integer Dim Lieferant As Integer Dim Kosten As Integer Dim xlApp As Object Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Keine Dokumentnte geöffnet." End End If If swModel.GetType <> swDocDRAWING Then MsgBox "Das Dokument ist keine Zeichnung." End End If Set swDraw = swModel Set swView = swDraw.GetFirstView Set swTable = swView.GetFirstTableAnnotation If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Do While swTable.Type <> 2 Set swTable = swTable.GetNext If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Loop ' Debug.Print swTable.Type nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount ' Stüli auslesen For j = 0 To nNumCol - 1 sTitStr = Trim(swTable.GetColumnCustomProperty(j)) If sTitStr = "Benennung" Then Benennung = j 'Debug.Print sTitStr ElseIf sTitStr = "Zeichnungsnummer" Then Zeichnungsnummer = j 'Debug.Print sTitStr ElseIf sTitStr = "Lieferant" Then Lieferant = j 'Debug.Print sTitStr ElseIf sTitStr = "Norm-Typ" Then NormTyp = j 'Debug.Print sTitStr ElseIf sTitStr = "Material" Then Material = j 'Debug.Print sTitStr ElseIf sTitStr = "Hersteller" Then Hersteller = j 'Debug.Print sTitStr ElseIf sTitStr = "Hersteller Sachnummer" Then HerstellerSachnummer = j 'Debug.Print sTitStr ElseIf sTitStr = "E/V" Then ErsatzVerschleiss = j 'Debug.Print sTitStr ElseIf sTitStr = "Kosten" Then Kosten = j 'Debug.Print sTitStr End If 'Debug.Print sTitStr sTitStr = Trim(swTable.Text(0, j)) If sTitStr = "Pos." Then PosSpalte = j 'Debug.Print sTitStr ElseIf sTitStr = "Menge" Then MengenSpalte = j 'Debug.Print sTitStr End If 'Debug.Print sTitStr Next j ReDim SWXBom(nNumRow, 11) For a = 0 To nNumRow - 0 SWXBom(a, 1) = swTable.Text(a, PosSpalte) 'Debug.Print SWXBom(i, 1) SWXBom(a, 2) = swTable.Text(a, MengenSpalte) 'Debug.Print SWXBom(i, 2) SWXBom(a, 3) = swTable.Text(a, Benennung) 'Debug.Print SWXBom(i, 3) SWXBom(a, 4) = swTable.Text(a, Zeichnungsnummer) 'Debug.Print SWXBom(i, 4) SWXBom(a, 5) = swTable.Text(a, HerstellerSachnummer) 'Debug.Print SWXBom(i, 5) SWXBom(a, 6) = swTable.Text(a, ErsatzVerschleiss) 'Debug.Print SWXBom(i, 6) SWXBom(a, 7) = swTable.Text(a, NormTyp) 'Debug.Print SWXBom(i, 7) SWXBom(a, 8) = swTable.Text(a, Material) 'Debug.Print SWXBom(i, 8) SWXBom(a, 9) = swTable.Text(a, Hersteller) 'Debug.Print SWXBom(i, 9) SWXBom(a, 10) = swTable.Text(a, Lieferant) 'Debug.Print SWXBom(i, 10) If swTable.Text(a, Kosten) <> "" Then SWXBom(a, 11) = swTable.Text(a, Kosten) If Right(SWXBom(a, 11), 2) = "Kosten" Then SWXBom(a, 2) = Left(SWXBom(a, 11), Len(SWXBom(a, 11)) - 2) 'Debug.Print SWXBom(i, 4) End If Next a Set swApp = Nothing Set swModel = Nothing Set swDraw = Nothing Set swView = Nothing Set swTable = Nothing Set xlApp = CreateObject("Excel.Application") For a = 1 To nNumRow - 2 For j = 1 To 11 Debug.Print SWXBom(a, j) Cells(a, j).Value = SWXBom(a, j) Next j Next a Set xlApp = Nothing End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ckoring Mitglied Ingenieur
Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 12. Feb. 2014 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1434 Registriert: 20.12.2003 SolidWorks 2024 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 12. Feb. 2014 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Cuprar, du musst in der Ausgabeschleife, wo du die SWX-Tabelle an Excel übergibst, den Zeilenzähler um deine drei oder vier Zeilen erhöhen. Code: For a = 1 To nNumRow - 2 For j = 1 To 11 Debug.Print SWXBom(a, j) Cells(a+3, j).Value = SWXBom(a, j) Next j Next a
------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lueghi Mitglied Admin für alle Systeme ....
Beiträge: 439 Registriert: 01.07.2005 CAD...: SWX2022 SP5, ACAD 2019, Tacton / LINO PDM...: PRO.FILE 8.6 ERP...: proAlpha 6.2e / 7.1 BS....: Win10, HP ZBook G5
|
erstellt am: 13. Feb. 2014 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 14. Feb. 2014 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
Lueghi Mitglied Admin für alle Systeme ....
Beiträge: 439 Registriert: 01.07.2005 CAD...: SWX2022 SP5, ACAD 2019, Tacton / LINO PDM...: PRO.FILE 8.6 ERP...: proAlpha 6.2e / 7.1 BS....: Win10, HP ZBook G5
|
erstellt am: 18. Feb. 2014 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|
CAD-Rene Mitglied Technischer Zeichner / Konstrukteur
Beiträge: 9 Registriert: 23.03.2012 Systemkonfiguration: DELL M4500 Precision und Solidworks 2014 SP4
|
erstellt am: 04. Aug. 2014 21:46 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Stefan, danke, dass du das Makro zur Verfügung stellst - funktioniert super - hast du vielleicht auch eine Ahnung wie man anstatt .csv das Ganze als xls bzw. xlsx exportieren kann bzw. in das Makro ein einen weiteren Schritt einbaut der die exportierte CSV- Datei gleich weiter verarbeitet in das XLS-Format? Reihenfolge: .sldbomtbt zu .csv danach .xls) Gruß René Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 07. Aug. 2014 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo René, das habe ich leider auch noch nicht hin bekommen die Solidworks Stückliste direkt in Excel zu exportieren, deswegen haben wir den Schritt über die CSV Datei. Bei uns ist die Vorgehensweise so, beim Freigeben der Zeichnung durch das PDM System wird die Stückliste in eine CSV Datei geschrieben und auf einem Netzwerkpfad abgelegt. Für die Arbeitsvorbereitung haben wir uns dann in Excel ein Makro geschrieben welches die CSV Datei in Excel einliest. Damit sind wir gut zufrieden und es klappt auch hervorragend. Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dopplerm Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3636 Registriert: 11.02.2005 Win 10 SWX 2019 SP 5.0
|
erstellt am: 07. Aug. 2014 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Leute! wie ihr ja wisst, habe ich keine Ahnung vom Programmieren, trotzdem konnte ich ausden oben geposteten Macros mir eins für unsere Stückliste zusammenschustern. Ich habe nur noch einen Fehler darin, ich komme nicht auf dei Variable für die Stückzahlen, vermutlich liegt es daran, das vor meiner Zeit mit englischen Vorlagen begonnen wurde. "Menge" funktioniert nicht und ich komm nicht drauf, welche Variable es sonst ist... ahh so nah am Zeil und das ohne Kenntnisse edit: mein Dank an das support Team von DPS! Die haben mein Missverständnis aufgelöst, einfach die Bezeichnung in der Spaltenüberschrift verwenden und es geht, ich Idiot habe die interne Bezeichnung von SWX dahinter vermutet und natürlich immer was falsches raus bekommen edit ende Dake für eure Hilfe! Martin ------------------ bin derzeit leider nicht unter Skype erreichbar [Diese Nachricht wurde von dopplerm am 11. Aug. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gleichi86 Mitglied Konstrukteur
Beiträge: 3 Registriert: 20.11.2018 Solidworks Premium 2017 x64 - Edition Sp 5.0
|
erstellt am: 19. Dez. 2018 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo, ich weiß dieser Betrag ist schon etwas älter, aber ich habe ein kleines Problem welches genau zu diesem Thema passt. Ich habe es soweit geschafft, dass alle Inhalte der Stückliste exportiert werden. Nur Positionsnummer und Menge werden nicht richtig angezeigt. Ich gehe mal davon aus, dass das an 'GetColumnCustomProperty' liegen könnte!? Kann mir hier bitte jemand weiterhelfen. LG Gleichi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dopplerm Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3636 Registriert: 11.02.2005 Win 10 SWX 2019 SP 5.0
|
erstellt am: 19. Dez. 2018 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Gleichi, hast du meinen vorigen Beitrag gelesen, vielleicht löst das dein Problem. oder was wird angezeigt? kommt kein Eintrag kommen falsche Werte? lg Martin ------------------ ich spiel noch immer gern mit Bauklötzen, nur sind sie jetzt teurer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gleichi86 Mitglied Konstrukteur
Beiträge: 3 Registriert: 20.11.2018 Solidworks Premium 2017 x64 - Edition Sp 5.0
|
erstellt am: 20. Dez. 2018 09:01 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Martin, danke für deine Rückmeldung. Es werden nur Daten abgerufen welche in den benutzerdefinierten Eigenschaften stehen. Jedoch keine SWX-Standardwerte Wie eben Menege und Positionsnummer. Wenn kein Wert gefunden wird, wird der Wert 1-x fortlaufend eingetragen. Schicke gleich noch Screenshots Sub main() Dim swApp As Object Dim swModel As Object Dim swDraw As Object Dim swView As Object Dim swTable As Object Dim swFeat As Object Dim swBomFeat As Object Dim bRet As Boolean Dim swAnn As Object Dim nNumCol As Long Dim nNumRow As Long Dim sRowStr As String Dim sTitStr As String Dim a As Long Dim j As Long Dim b As Long Dim intOutHandle As Integer Dim strOneLine As String Dim SWXBom() As String Dim sZelle As String Dim spalteA As Integer Dim spalteB As Integer Dim spalteC As Integer Dim spalteD As Integer Dim spalteE As Integer Dim spalteF As Integer Dim spalteG As Integer Dim spalteH As Integer Dim spalteI As Integer Dim spalteJ As Integer Dim spalteK As Integer Dim spalteL As Integer Dim spalteM As Integer Dim spalteN As Integer Dim spalteO As Integer Dim strPathExcel1 As String Dim xlApp As Object Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Keine Dokumentnte geöffnet." End End If
If swModel.GetType <> swDocDRAWING Then MsgBox "Das Dokument ist keine Zeichnung." End End If Set swDraw = swModel Set swView = swDraw.GetFirstView Set swTable = swView.GetFirstTableAnnotation If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Do While swTable.Type <> 2 Set swTable = swTable.GetNext If swTable Is Nothing Then MsgBox "Die Zeichnung enthält keine Stückliste" End End If Loop ' Debug.Print swTable.Type nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount ' Stüli auslesen For j = 0 To nNumCol - 1 sTitStr = Trim(swTable.GetColumnCustomProperty(j)) If sTitStr = "POS-NR." Then spalteA = j 'Debug.Print sTitStr ElseIf sTitStr = "STÜCK" Then spalteB = j 'Debug.Print sTitStr ElseIf sTitStr = "Benennung" Then spalteC = j 'Debug.Print sTitStr ElseIf sTitStr = "SW-Dateiname" Then spalteD = j 'Debug.Print sTitStr ElseIf sTitStr = "Änderungsindex" Then spalteE = j 'Debug.Print sTitStr ElseIf sTitStr = "Oberflächenbehandlung" Then spalteF = j 'Debug.Print sTitStr ElseIf sTitStr = "Fertigunstyp" Then spalteG = j 'Debug.Print sTitStr ElseIf sTitStr = "Wärmebehandlung" Then spalteH = j 'Debug.Print sTitStr ElseIf sTitStr = "Verschleiß" Then spalteI = j 'Debug.Print sTitStr ElseIf sTitStr = "Material" Then spalteJ = j 'Debug.Print sTitStr ElseIf sTitStr = "Bezeichnung" Then spalteK = j 'Debug.Print sTitStr ElseIf sTitStr = "Artikelnummer" Then spalteL = j 'Debug.Print sTitStr ElseIf sTitStr = "Lieferant" Then spalteM = j 'Debug.Print sTitStr ElseIf sTitStr = "Fläche" Then spalteN = j 'Debug.Print sTitSt ElseIf sTitStr = "Abmessung" Then spalteO = j 'Debug.Print sTitStr End If 'Debug.Print sTitStr Next j ReDim SWXBom(nNumRow, 16) For a = 0 To nNumRow - 0 SWXBom(a, 1) = swTable.Text(a, spalteA) 'Debug.Print SWXBom(i, 1) SWXBom(a, 2) = swTable.Text(a, spalteB) 'Debug.Print SWXBom(i, 2) SWXBom(a, 3) = swTable.Text(a, spalteC) 'Debug.Print SWXBom(i, 3) SWXBom(a, 4) = swTable.Text(a, spalteD) 'Debug.Print SWXBom(i, 4) SWXBom(a, 5) = swTable.Text(a, spalteE) 'Debug.Print SWXBom(i, 5) SWXBom(a, 6) = swTable.Text(a, spalteF) 'Debug.Print SWXBom(i, 6) SWXBom(a, 7) = swTable.Text(a, spalteG) 'Debug.Print SWXBom(i, 7) SWXBom(a, 8) = swTable.Text(a, spalteH) 'Debug.Print SWXBom(i, 8) SWXBom(a, 9) = swTable.Text(a, spalteI) 'Debug.Print SWXBom(i, 9) SWXBom(a, 10) = swTable.Text(a, spalteJ) 'Debug.Print SWXBom(i, 10) SWXBom(a, 11) = swTable.Text(a, spalteK) 'Debug.Print SWXBom(i, 11) SWXBom(a, 12) = swTable.Text(a, spalteL) 'Debug.Print SWXBom(i, 12) SWXBom(a, 13) = swTable.Text(a, spalteM) 'Debug.Print SWXBom(i, 13) SWXBom(a, 14) = swTable.Text(a, spalteN) 'Debug.Print SWXBom(i, 14) SWXBom(a, 15) = swTable.Text(a, spalteO) 'Debug.Print SWXBom(i, 15) Next a Set swApp = Nothing Set swModel = Nothing Set swDraw = Nothing Set swView = Nothing Set swTable = Nothing Set xlApp = CreateObject("Excel.Sheet") xlApp.Application.Visible = True For a = 1 To nNumRow - 2 For j = 1 To 15 Debug.Print SWXBom(a, j) xlApp.Application.Cells(a, j).Value = SWXBom(a, j) Next j Next a Set xlApp = Nothing End Sub [Diese Nachricht wurde von gleichi86 am 20. Dez. 2018 editiert.] Anbei ein Screenshot der Excel Datei. Die ersten beiden Spalten werden nicht abgerufen (1 Pos.Nr 2 Menge)
[Diese Nachricht wurde von gleichi86 am 21. Dez. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADUserMFP Mitglied Konstrukteur
Beiträge: 8 Registriert: 25.01.2019 SolidWorks 2016 SP5.0
|
erstellt am: 10. Apr. 2019 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo gleichi86, Ich habe den Code für mich angepasst, das funktioniert auch super, jedoch verschwindet die Excel Datei nach dem ausführen. wie machst du das? speicherst du die irgendwo? Grüße CADUserMFP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 23. Jun. 2019 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Zusammen, anbei ein erweitertes Makro welches wir verwenden um die Solid Stückliste in eine CSV Datei zu schreiben und dann nach Excel zu überführen. Im Makro muss nur der Speicherpfad angepasst werden. Das Makro ist an unsre Bedürfnisse angepasst, lässt sich aber erweitern. Wichtig ist das unter Verweisen die Microsoft EXCEL 14.0 Object Libaray ( oder höher ) aktiviert ist. Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rene.O. Mitglied
Beiträge: 13 Registriert: 22.11.2019 SolidWorks2023 SW PDM Standard 2023 AutoCAD 2024
|
erstellt am: 10. Apr. 2024 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Entschuldigung, dass ich dieses alte Thema nochmal ausbuddeln muss. Hallo zusammen, wir würden dieses Makro quasi genau so auch gerne verwenden. Der einzige Unterschied ist, dass wir am Ende der SW Stückliste eine ausgeblendete Spalte haben, welche mit ausgelesen werden soll. Ich habe schon versucht das Makro so zu modifizieren, dass bevor das auslesen beginnt alle Spalten eingeblendet werden. Das hat aber leider nicht funktioniert. Habe auch leider keine VBA Erfahrung. Ist das möglich? Danke schonmal vorab. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jimi1st Mitglied Konstrukteur
Beiträge: 25 Registriert: 20.02.2012 SolidWorks 2020 SP5 Logopress 3 HP Z2 v4 I9 13900 NVIDIA RTX A4000 Win11 Stampack Xpress Umformsimulation
|
erstellt am: 10. Apr. 2024 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo, nicht direkt hilfe zu deiner Frage. Wir nehmen das Tool SWXHelper, der kann das. https://swxtools.de/downloads/ Mit BOM-2-Excel kannst du Stücklisten exportieren. ------------------ Form follows f*cking function. [Diese Nachricht wurde von jimi1st am 10. Apr. 2024 editiert.] [Diese Nachricht wurde von jimi1st am 10. Apr. 2024 editiert.] [Diese Nachricht wurde von jimi1st am 10. Apr. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rene.O. Mitglied
Beiträge: 13 Registriert: 22.11.2019 SolidWorks2023 SW PDM Standard 2023 AutoCAD 2024
|
erstellt am: 10. Apr. 2024 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Danke, aber kommt leider nicht in Frage. Das Makro muss im Anschluss noch erweitert werden, wenn der Export ausgeblendeter Spalten funktioniert. [Diese Nachricht wurde von Rene.O. am 10. Apr. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2798 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 12. Apr. 2024 07:56 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
Hallo Rene, ersetzte mal die ColumnCount Property (ITableAnnotation) durch die TotalColumnCount Property (ITableAnnotation) um alle Spalten auch die ausgeblendeten für die Schleife zu erfassen und dann noch die veraltete .text Property (ITableAnnotation) durch die neuere .text2 Property (ITableAnnotation) mit der entsprechenden Zusatzvariablen "True" in der Schleife ersetzten um auch die ausgeblendete Zellen auszulesen. PS:Grundlage war das letzte Macro von Stefan, falls du noch andere Anpassungen gemacht hast könnten diese natürlich auch noch irgendwie quer schießen, mit den oberen Anpassungen werden die Zellen auch nicht extra eingeblendet. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 12. Apr. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rene.O. Mitglied
Beiträge: 13 Registriert: 22.11.2019 SolidWorks2023 SW PDM Standard 2023 AutoCAD 2024
|
erstellt am: 18. Apr. 2024 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für gronbi
|