| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Tierisch mobil: Der autonome Inspektionsroboter ANYmal | SOLIDWORKS |
Autor
|
Thema: Eigenschaft in excel schreiben (1342 mal gelesen)
|
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 05. Jul. 2021 13:07 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte Eigenschaften aus einem offenen Teil in ein excelfile schreiben. Diese möchte ich dann auch als eine Art Datenbank für die Teile verwenden. Ich hab leider noch keinen richtigen Ansatz zum Schreiben einer Eigenschaft z.B. Artikelnummer in eine Exceltabelle "C\Test\liste.xlsx". Könnt ihr mir da weiterhelfen? Vielen Dnank, Gruß Pete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 05. Jul. 2021 14:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe jetzt das gefunden [URL=https://ww3.cad.de/foren/ubb/Forum2/HTML/030801.shtml][/URL] Das klappt bei mir aber nicht. muss ich unter Extras/ verweise etwas laden?
SW2020SP5 im Einsatz. danke und Gruß :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 05. Jul. 2021 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Zitat: Original erstellt von Pete85:
Das klappt bei mir aber nicht. muss ich unter Extras/ verweise etwas laden?
Hallo, schaust du das Bild an. Die Excelversion ist natürlich eine Variable. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 06. Jul. 2021 15:45 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank, das habe ich gesucht. Ich lese nun die Eigenschaften aus indem ich eine Baugruppe lade und durch traversieren durch alle Teile und BG in der Baugruppe durch.... Das dauert natürlich seine Zeit. auch schon weil ich abfrage ob eine Zeichnung zum Teil existiert. Gibt es eine Möglichkeit die ein Öffnen der einzelnen Teile in der Baugruppe nicht unbedingt benötigt? Ziel ist es dann die Informationen in Excel zu pflegen und zurück zu geben. Das funktioniert jetzt auch schon aber eben sehr langsam... da jedes Teil einzeln geöffnet wird. Habt Ihr eine Idee wie man da schneller werden kann? Grüße Pete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 06. Jul. 2021 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 06. Jul. 2021 20:26 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Zitat: Original erstellt von Pete85:
Gibt es eine Möglichkeit die ein Öffnen der einzelnen Teile in der Baugruppe nicht unbedingt benötigt?
Hallo, ja, das geht auch ohne die referenzierten Teile und Unterbaugruppen zu öffnen. Da du ja bereits eine Baugruppe geöffnet hast, lassen sich z.B. Dateieigenschaften, Material oder auch das Gewicht der Komponenten auslesen, ohne dass du die Document-Manager-API bemühst. kleiner Auszug aus meinem Makro (nicht vollständig und auch nur als Anregung, um zu sehen, wie der Weg geht) Code:
Set Configuration = swModel.GetActiveConfiguration() Set RootComponent = Configuration.GetRootComponent() 'und jetzt rekursiv durch alle Ebenen gehen, um Daten im Array "referencedDoc" zu speichern TraverseComponent 1, RootComponent End Sub Private Function TraverseComponent(Level As Integer, Component As SldWorks.Component2) Dim ModelDoc As SldWorks.ModelDoc2 Dim ConfigName As String Dim MassProp As Variant Set ModelDoc = Component.GetModelDoc() ConfigName = Component.ReferencedConfiguration referencedDoc.Description = ModelDoc.CustomInfo2("", "Description") referencedDoc.Description2 = ModelDoc.CustomInfo2(actualDoc.RefConfig, "Description2") 'und die MassProperties auslesen und Gewicht ermitteln ModelDoc.ShowConfiguration (ConfigName) MassProp = ModelDoc.GetMassProperties() If Not IsEmpty(MassProp) Then referencedDoc.Masse = Round(MassProp(5), 3) End If End Function
Ich hoffe, du kommst mit dem Schnipsel etwas weiter.
Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) [Diese Nachricht wurde von Andi Beck am 06. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 03. Aug. 2021 08:46 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich komm mal wider nicht weiter... ich habe hier einen Code zum Öffnen eines Dokuments... leider geht hier aber nix auf. Ich möchte dieses Teil nur öffnen, speichern und schließen... das kann doch nicht so schwer sein... Öffnet sich das Teil Ich bekomme bei Code: swApp.ActivateDoc Part.GetPathName
einen Laufzeitfehler 91 der ganze Code lautet:
Option Explicit
Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Dim xlApp As New Excel.Application Dim objSource As Excel.Worksheet Dim xl As Excel.Workbook Dim swCompName As String Dim CompDateiendung As String Dim aktzeil, letztezeile As Integer Dim swDrawPath As String
Dim CompPathName As String Dim FileError As Long Dim FileWarning As Long Sub main() Set swApp = Application.SldWorks swApp.Visible = True
'Verbindung zum Excel-Dokument Set xl = GetObject("Pfad/zur/Excel.Datei") 'Auswahl des Tabellenblatts Set objSource = xl.Worksheets("tabelle1") letztezeile = objSource.UsedRange.SpecialCells(xlCellTypeLastCell).Row For aktzeil = 1 To letztezeile CompPathName = objSource.Cells(aktzeil, 3) swCompName = Mid(CompPathName, InStrRev(CompPathName, "\") + 1, Len(CompPathName)) CompDateiendung = Right(CompPathName, 7) swDrawPath = Left(CompPathName, Len(CompPathName) - 7) & ".SLDDRW" If CompDateiendung = ".SLDPRT" Then Set Part = swApp.OpenDoc6(CompPathName, swDocPART, swOpenDocOptions_LoadLightweight, "", FileError, FileWarning) ElseIf CompDateiendung = ".SLDASM" Then Set Part = swApp.OpenDoc6(CompPathName, swDocASSEMBLY, swOpenDocOptions_LoadLightweight, "", FileError, FileWarning) ElseIf CompDateiendung = ".SLDDRW" Then Set Part = swApp.OpenDoc6(CompPathName, swDocDRAWING, swOpenDocOptions_LoadLightweight, "", FileError, FileWarning) Else MsgBox "Dateityp wird nicht unterstützt" End If
swApp.ActivateDoc Part.GetPathName Part.Save swApp.CloseDoc Part.GetPathName objSource.Cells(aktzeil, 11) = "SAVED" Next End Sub Vielen Dank für eure Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 03. Aug. 2021 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Hallo Pete Überprüfe bitte ob die Variable CompPathName auch den kompletten Pfad inkl. Dateiendung enthält. für die Zeichnung musst du noch die Variable zu swDrawPath ändern Rein theoretisch sollte das Dokument mit
Code: Set Part = swApp.OpenDoc6(CompPathName, swDocDRAWING, swOpenDocOptions_LoadLightweight, "", FileError, FileWarning)
schon geladen (evtl. nur im Hintergrund) sein. Ansonsten kannst du statt dem
Code: swApp.ActivateDoc Part.GetPathName
auch dein Ursprünglichen Pfad verwenden
Code: swApp.ActivateDoc(CompPathName)
Gruß Christoph
------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 03. Aug. 2021 16:25 <-- editieren / zitieren --> Unities abgeben:
Moin, da geht leider auch nix. Ich sehe auch nicht das dass Teil geöffnet wurde. gespeichert wird das Teil im Moment auch nicht... Wie kann ich die Komponente den Speichern und schließen. es Klappt gerade garnichts mehr... Danke und Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Aug. 2021 19:31 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Aug. 2021 19:47 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 04. Aug. 2021 08:22 <-- editieren / zitieren --> Unities abgeben:
Danke für eure Unterstützung!!! es geht aber leider immer noch nicht. Habe ich vielleicht die Variablen falsch deklariert? oder muss ich einen Verweis aktivieren? darf das Excelfile nicht im Zugriff sein? unten nochmals der aktuelle Code.. Ich habe ja im Moment keine Baugruppe auf und kann diese auch nicht aus der Baugruppe laden. ich will ja jetzt einen Pfad aus einer Exceldatei öffnen... Danke.. Code: Option Explicit Dim swApp As SldWorks.SldWorks Dim swComp As SldWorks.ModelDoc2 Dim xlApp As New Excel.Application Dim objSource As Excel.Worksheet Dim xl As Excel.Workbook Dim swCompName As String Dim CompDateiendung As String Dim aktzeil, letztezeile As Integer Dim swDrawPath As String Dim boolstatus As Boolean Dim LWarnings As Long Dim LErrors As Long Dim Doctype As Variant
Dim Warnings As Long Dim Errors As Long Dim bRet As Boolean Dim CompPathName As String Dim FileError As Long Dim FileWarning As Long Sub main() Dim PartName As String Set swApp = Application.SldWorks swApp.Visible = False 'Verbindung zum Excel-Dokument Set xl = GetObject("Pfad excelfile") 'Auswahl des Tabellenblatts Set objSource = xl.Worksheets("tabelle1") letztezeile = objSource.UsedRange.SpecialCells(xlCellTypeLastCell).Row For aktzeil = 1 To letztezeile CompPathName = objSource.Cells(aktzeil, 3) swCompName = Mid(CompPathName, InStrRev(CompPathName, "\") + 1, Len(CompPathName)) CompDateiendung = UCase(Right(CompPathName, 7)) swDrawPath = Left(CompPathName, Len(CompPathName) - 7) & ".SLDDRW" If CompDateiendung = ".SLDPRT" Then Set swComp = swApp.OpenDoc6(CompPathName, swDocPART, swOpenDocOptions__Silent, "", Errors, Warnings) ElseIf CompDateiendung = ".SLDASM" Then Set swComp = swApp.OpenDoc6(CompPathName, swDocASSEMBLY, swOpenDocOptions__Silent, "", Errors, Warnings) ElseIf CompDateiendung = ".SLDDRW" Then Set swComp = swApp.OpenDoc6(CompPathName, swDocDRAWING, swOpenDocOptions_Silent, "", Errors, Warnings) Else MsgBox "Dateityp wird nicht unterstützt" End If
swApp.ActivateDoc swComp.GetTitle
bRet = swComp.Save3(swSaveAsOptions_Silent, Errors, Warnings) swApp.CloseDoc swComp.GetTitle objSource.Cells(aktzeil, 11) = "SAVED" Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko Soehnholz Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH) Maschinenbau
Beiträge: 5463 Registriert: 03.07.2002 SOLIDWORKS 2001 - 2024SP0.1 Elite AE Award 2023 SOLIDWORKS Premium, Simu, Flow, Plastics, Composer, MBD, Inspection, PDMP, Visualize, TopsWorks, DPS Tools, JobBox, MacroSheet, etc. Passungstabelle von Heinz WIN10x64 22H2 | HP ZBook 17 Fury G8
|
erstellt am: 04. Aug. 2021 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 04. Aug. 2021 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Hallo Pete, wir wissen leider nicht was genau in deiner Excel Zelle steht. Was enthält den die Variable "CompPathName" genau? Diese Variable muss den Kompletten Pfad inklusive Dateinamen und Dateiendung enthalten. Gruß Christoph
------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 04. Aug. 2021 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Zitat: Original erstellt von Heiko Soehnholz:
versuchst du da einen Teil einer PDM Funktionalität selbst zu programmieren?
Er erfragt sich viele kleine Puzzle-Stückchen, sind wir nicht alle so angefangen? Um ein Such-Ergebnis als Excel-Datei zu bekommen, braucht es nach meiner Kenntnis den Report-Generator. Es gibt aber auch einen Fall, da ist Programmierung angesagt: Z.B. Bin ich dabei, unsere vorhanden Schweißkonstruktionsprofile zu konfigurieren, um auch später mal den Struktursystemmodus nutzen zu können. Da wir für die Profile keine Datenkarte haben und brauchen, habe ich mir einen 20'Zeiler programmiert, welcher mir eine Excel-Datei mit den gewünschten Eigenschaften ausgibt. Gruß, Klaus.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko Soehnholz Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH) Maschinenbau
Beiträge: 5463 Registriert: 03.07.2002 SOLIDWORKS 2001 - 2024SP0.1 Elite AE Award 2023 SOLIDWORKS Premium, Simu, Flow, Plastics, Composer, MBD, Inspection, PDMP, Visualize, TopsWorks, DPS Tools, JobBox, MacroSheet, etc. Passungstabelle von Heinz WIN10x64 22H2 | HP ZBook 17 Fury G8
|
erstellt am: 04. Aug. 2021 09:34 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Nein, ich habe nie angefangen, eine fertige Softwarelösung in Teilen nach zu programmieren. Neue Lösungen schon... Zitat:
Diese möchte ich dann auch als eine Art Datenbank für die Teile verwenden.
Er will also das Suchergebnis nach meinem Verständnis nur deshalb als Excel, um es als Datenbank zu verwenden. Wäre ein Datenbank schon da, ist Excel ggf. überflüssig. Und: Das PDM Standard kostet nichts extra, wenn man schon die betreffende Ausbaustufe von SWX hat. Auch die MS SQL Express Datenbank ist kostenfrei. ------------------ Einen schönen Gruß von Heiko • www.dps-software.de • www.dps-akademie.de • www.iknow-solidworks.de • www.youtube.de/dpssoftwaregmbh • [Diese Nachricht wurde von Heiko Soehnholz am 04. Aug. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 04. Aug. 2021 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 04. Aug. 2021 11:02 <-- editieren / zitieren --> Unities abgeben:
Ich hab meinen Fehler gefunden... die Teile die ich versucht habe zu öffnen, sind beschädigte Dateien. mit einer Abfrage ob ein Teil durch OpenDoc6 geöffnet wurde, dann weitere Aktion - sonst Teil überspringen, funktioniert das Programm jetzt ganz gut. Danke für eure Hilfe!!! der nächste Stolperstein kommt bestimmt... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|