| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Benutzer iProperties in Excel Vorlage schreiben (1201 mal gelesen)
|
Goose Mitglied Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik
Beiträge: 207 Registriert: 29.03.2007 IV2024 R3 CATIA V6 R2013x
|
erstellt am: 09. Jul. 2019 15:42 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte bestimmte iProperties eines Bauteils in eine Celle einer Excel Vorlage speichern. Das Öffnen der Vorlagedatei funktioniert aber ich bekomme das Property nicht in eine bestimmte Celle übertragen. Könnte mir da jemand ein Beispiel zur verfügen stellen!? Danke und Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 09. Jul. 2019 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für Goose
|
Goose Mitglied Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik
Beiträge: 207 Registriert: 29.03.2007 IV2024 R3 CATIA V6 R2013x
|
erstellt am: 10. Jul. 2019 10:48 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von KraBBy: es wären mehr Details wünschenswert. Wie wird die Exceldatei geöffnet? Welchen Code hast Du bisher? ... (Beispiel habe ich keines parat, deshalb meine Fragen)
Code: Public Sub TNR_To_Excel() Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oDoc As Inventor.Document Set oDoc = oApp.ActiveDocument ' Obtain the PropertySets collection object Dim oPropSets As PropertySets Set oPropSets = oDoc.PropertySets Dim oProp As Property For Each oProp In oDoc.PropertySets.Item("inventor user defined properties") If oProp.name = "TNR" Then iPropTextTNR = oProp.value End If Next If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _ ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MsgBox "Nur für Bauteile oder Baugruppen vefügbar", vbCritical Exit Sub End If Dim XL As Object Dim xlWB As Object Dim xlWS As Object On Error Resume Next Set XL = GetObject("Excel.Application") If err.Number Then ' Excel läuft noch nicht - starten err.Clear On Error Resume Next Set XL = CreateObject("Excel.Application") If err.Number Then err.Clear MsgBox "Kann Excel nicht öffnen." Exit Sub End If 'Stüchlistenvorlage öffnen aus Verzeichnis 'Pfad der Projektdatei suchen Dim ProjektPfadtxt As String ProjektPfadtxt = ThisApplication.FileLocations.FileLocationsFile Dim Index As Long Index = InStrRev(ProjektPfadtxt, "\") ProjektPfadtxt = Left$(ProjektPfadtxt, Index) 'Stücklistenvorlage aus aktiven Projekt öffnen Set xlWB = XL.Workbooks.Open(ProjektPfadtxt + "Parameter - Excel\Vorlage-Kostenkalkulation.xlsm") If err.Number Then MsgBox "Kann Stücklistenvorlage nicht öffnen." Exit Sub End If End If
'Zellen beschreiben iRow = 1 xlWS.Cells(iRow, 1).value = "iPropTextTNR" 'save this XL document, default to Inventor location and name sDocName = ThisApplication.ActiveDocument.FullFileName If sDocName = "" Then sDocName = "c:\temp\x" Else sDocName = Mid(sDocName, 1, Len(sDocName) - 4) End If If Dir(sDocName & ".xlsm") <> "" Then i = 1 Do While Dir(sDocName & "_" & i & ".xlsm") <> "" i = i + 1 Loop sDocName = sDocName & "_" & i End If xlWB.SaveAs filename:=sDocName 'Speichern Dim Stueli_Name As String Dateiname = Left$(ThisApplication.ActiveDocument.FullFileName, Len(ThisApplication.ActiveDocument.FullFileName) - 4) + ".xlsm" xlWB.SaveAs Dateiname XL.Visible = True
'Excel schließen 'XL.Application.Quit 'Verbindung zu Excel lösen Set xlWS = Nothing Set xlWB = Nothing Set XL = Nothing End Sub
Bei "'Zellen beschreiben" wollte ich die TNR in die Excel Tabelle übergeben.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 10. Jul. 2019 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für Goose
xlWS (Excel Arbeitsblatt) war nothing, das sollte es schon gewesen sein Code: 'KraBBy ergänzt (xlWS war nicht gesetzt, wegen Fehlerbehandlung nicht aufgefallen) On Error GoTo 0 Set xlWS = xlWB.worksheets.Item(1) 'Zellen beschreiben Dim iRow As Integer 'KraBBy ergänzt iRow = 1 '...
Ergänzend: ich bin ein Freund von "Option Explicit", damit wird die explizite Deklaration von Variablen nötig... ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goose Mitglied Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik
Beiträge: 207 Registriert: 29.03.2007 IV2024 R3 CATIA V6 R2013x
|
erstellt am: 10. Jul. 2019 13:02 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von KraBBy: xlWS (Excel Arbeitsblatt) war nothing, das sollte es schon gewesen seinCode: 'KraBBy ergänzt (xlWS war nicht gesetzt, wegen Fehlerbehandlung nicht aufgefallen) On Error GoTo 0 Set xlWS = xlWB.worksheets.Item(1) 'Zellen beschreiben Dim iRow As Integer 'KraBBy ergänzt iRow = 1 '...
Ergänzend: ich bin ein Freund von "Option Explicit", damit wird die explizite Deklaration von Variablen nötig...
Hallo KraBBy,
vielen Dank! Unities sind raus.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goose Mitglied Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik
Beiträge: 207 Registriert: 29.03.2007 IV2024 R3 CATIA V6 R2013x
|
erstellt am: 11. Jul. 2019 14:59 <-- editieren / zitieren --> Unities abgeben:
Code: If oProp.name = "TotalMass" Then iPropTextTotalMass = oProp.value End If Next If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _ ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MsgBox "Nur für Bauteile oder Baugruppen vefügbar", vbCritical Exit Sub End If Dim XL As Object Dim xlWB As Object Dim xlWS As Object On Error Resume Next Set XL = GetObject("Excel.Application") If err.Number Then ' Excel läuft noch nicht - starten err.Clear On Error Resume Next Set XL = CreateObject("Excel.Application") If err.Number Then err.Clear MsgBox "Kann Excel nicht öffnen." Exit Sub End If 'Stüchlistenvorlage öffnen aus Verzeichnis 'Pfad der Projektdatei suchen Dim ProjektPfadtxt As String ProjektPfadtxt = ThisApplication.FileLocations.FileLocationsFile Dim Index As Long Index = InStrRev(ProjektPfadtxt, "\") ProjektPfadtxt = Left$(ProjektPfadtxt, Index) 'Stücklistenvorlage aus aktiven Projekt öffnen Set xlWB = XL.Workbooks.Open(ProjektPfadtxt + "Parameter - Excel\Vorlage-Kostenkalkulation.xlsm") If err.Number Then MsgBox "Kann Stücklistenvorlage nicht öffnen." Exit Sub End If End If
On Error GoTo 0 Set xlWS = xlWB.worksheets.Item(1) 'Zellen beschreiben Dim iRow As Integer iRow = 5 xlWS.Cells(iRow, 5).value = iPropTextLaenge iRow = 6 xlWS.Cells(iRow, 5).value = iPropTextBreite iRow = 7 xlWS.Cells(iRow, 5).value = iPropTextHoehe iRow = 9 xlWS.Cells(iRow, 5).value = iPropTextTotalMass
Ich habe noch ein Problem welches ich nicht zuordnen kann! Das Property "TotalMass" wird in den Benutzerdefinierten iProperties mit z.B. 0,534 oder 1,278 hinterlegt. Bei der Übergabe in Excel wird ab einem Wert von über 1 also z.B. 1,278 nach Excel 1.278 geschrieben. Wie muss die Formatierung laufen damit auf der Excel Seite auch die 1,278 ankommen? Die Zellenformatierung in der Excel Vorlage zu ändern führt nicht zum gewünschten Ergebnis! Danke schon mal!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 11. Jul. 2019 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für Goose
Das hat wohl mit dem dezimaltrennzeichen auf windowsebene zu tun. Ich vermute, du hast "," eingestellt. Entsprechend wird "." als tausend interpretiert. (oder eben umgekehrt) Außerdem ist wichtig in welchem Datentyp die variable iPropTextTotalMass vorliegt. Hast du sie deklariert? Ist das auch ein Benutzer iProp? Die sind ja immer Text, oder? Je nachdem, könntest du versuchen, Punkt u Komma zu tauschen iPropTextTotalMass = Replace(iPropTextTotalMass, ".", ",") U.u. Kommt im Excel auch etwas anderes an, wenn man nicht in die Eigenschaft .Value schreibt sondern .Formula. Evtl auch einen Versuch wert... Das alles, ohne es ausprobiert zu haben. ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goose Mitglied Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik
Beiträge: 207 Registriert: 29.03.2007 IV2024 R3 CATIA V6 R2013x
|
erstellt am: 12. Jul. 2019 07:41 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von KraBBy: Das hat wohl mit dem dezimaltrennzeichen auf windowsebene zu tun. Ich vermute, du hast "," eingestellt. Entsprechend wird "." als tausend interpretiert. (oder eben umgekehrt) Außerdem ist wichtig in welchem Datentyp die variable iPropTextTotalMass vorliegt. Hast du sie deklariert? Ist das auch ein Benutzer iProp? Die sind ja immer Text, oder?Je nachdem, könntest du versuchen, Punkt u Komma zu tauschen iPropTextTotalMass = Replace(iPropTextTotalMass, ".", ",") U.u. Kommt im Excel auch etwas anderes an, wenn man nicht in die Eigenschaft .Value schreibt sondern .Formula. Evtl auch einen Versuch wert... Das alles, ohne es ausprobiert zu haben.
iPropTextTotalMass = Replace(iPropTextTotalMass, ",", ".") brachten den gewünschten Erfolg! Vielen Dank.....
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |