| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| CIDEON Whitepaper: Collaboration mit optimiertem Daten- und Projektmanagement, ein Whitepaper
|
Autor
|
Thema: fx-Parameter in xml exportieren & per VBA-Makro in Excel (2005 / mal gelesen)
|
Traxtormer Mitglied
Beiträge: 59 Registriert: 12.04.2016 Windows 10 64-bit / Inventor Professional 2023
|
erstellt am: 24. Okt. 2017 18:06 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, die fx-Parameter vom Inventor 2016 in eine xml zu exportieren geht ja ohne Probleme, aber meine VBA-Kenntnisse sind hier leider sehr wenig ausgeprägt. Wollte mal nach Eurer Expertise fragen.
Ich haben ein Excel-Berechnungs-File, das unter Anderem als Input die letztgültigen Parameter vom Inventor-Modell benötigt. Ich stelle mir Folgendes vor: 1.) Per Button die von mir erzeugte xml-Datei ins Excel laden und dann quasi nur die brauchbaren Infos in ein speziell benanntes Tabellenblatt (zuerst komplett zu leeren und dann) zu schreiben(jeweils eine Spalte für): -Parametername, -dessen Wert !ohne Einheit! (Wenngleich eine Formel verwendet wird trotzdem nur den Endwert ausgeben!) -Einheit separat 2.) Ich kann die vorbereitete Parameter-Liste aus dem Tabellenblatt dann mittels S-Verweis in die Berechnungs-Formeln einlesen Bitte um Eure Hilfe!
Danke! LG PS: Ich nehme mal an es wird mal mit Folgendem starten: Dim vntFile As Variant vntFile = Application.GetOpenFilename("XML Dateien (*.xml),*.xml", MultiSelect:=False) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV 2018 ACADM 2018
|
erstellt am: 24. Okt. 2017 18:38 <-- editieren / zitieren --> Unities abgeben: Nur für Traxtormer
was hältst du davon direkt per VBA alle Parameter nach Excel (ohne manueller Export) und dazu direkt in die gewünschte Excel-Arbeitsmappe (Vorlage) in das jeweilige gewollte Blatt zu exportieren? Die gewünschten Werte bzw. Parameter kannst du dann schon wie du beschreibst per S-Verweis und andere Möglichkeiten rausziehen! bin mir sicher dass hier im Inventor VBA Forum das passende Makro findest, wenn nicht dann einfach nochmal melden. [Diese Nachricht wurde von xerxses am 24. Okt. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Traxtormer Mitglied
Beiträge: 59 Registriert: 12.04.2016 Windows 10 64-bit / Inventor Professional 2023
|
erstellt am: 24. Okt. 2017 19:57 <-- editieren / zitieren --> Unities abgeben:
|
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV 2018 ACADM 2018
|
erstellt am: 25. Okt. 2017 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für Traxtormer
bitte ins VBA-Brett verschieben. von Einbetten war nie die Rede und habe ich auch nicht gemeint. ich kann dir nur die eine Lösung anbieten, funktioniert gut und habe ich selbst in Gebrauch. Anmerkung: Makro ist nicht von mir. Quelle könnte Augce.de sein. bin mir aber nicht sicher. nicht getestet. ist bei mir nur ein Teil eines Makros, hoffe ich hab nix vergessen. Schritt 1: eine Exceldatei anlegen oder Direkt die Datei wo die Berechnungen statt finden. Name und Pfad merken. Schritt 2: Name und Pfad im Makro eintragen Schritt 3: Blattname im Makro eintragen. Schritt 4: Bauteil öffnen, Makro starten und zurücklehnen. Code: Public Sub ParamExport() Dim iRow As Long Dim i As Long Dim XL As Object Dim xlWB As Object Dim xlWS As Object Set XL = CreateObject("Excel.Application") ' Dateipfad und Name Set xlWB = XL.Workbooks.Open("C:\Pfad\Dateinname") Set xlWS = xlWB.ActiveSheet XL.Application.Visible = True Dim oParams As Parameters Dim sDocName As String ' Blattname xlWB.Sheets("Blattname").Select Set xlWS = xlWB.ActiveSheet Const Pi As Double = 3.14159265358979 If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _ ThisApplication.ActiveDocumentType <> kPartDocumentObject Then MsgBox "Only Part or Assymbly document", vbCritical Exit Sub End If on error resume next Set oParams = ThisApplication.ActiveDocument.ComponentDefinition.Parameters iRow = 2 xlWS.cells(iRow, 1).Value = "Type" xlWS.cells(iRow, 2).Value = "Name" xlWS.cells(iRow, 3).Value = "Unit" xlWS.cells(iRow, 4).Value = "Equation" xlWS.cells(iRow, 5).Value = "Nennwert" xlWS.cells(iRow, 6).Value = "Export" xlWS.cells(iRow, 7).Value = "Health" For i = 1 To oParams.Count iRow = iRow + 1 Select Case oParams.Item(i).Type Case kModelParameterObject xlWS.cells(iRow, 1).Value = "Model" Case kUserParameterObject xlWS.cells(iRow, 1).Value = "User" Case kTableParameterObject xlWS.cells(iRow, 1).Value = "Table" End Select xlWS.cells(iRow, 2).Value = oParams.Item(i).Name xlWS.cells(iRow, 3).Value = oParams.Item(i).Units xlWS.cells(iRow, 4).Value = oParams.Item(i).Expression Select Case oParams.Item(i).Units Case "mm" xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value * 10) '* 10, 4) & " mm" Case "grd" xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value * (180 / Pi), 4) '& " °" Case "oE" xlWS.cells(iRow, 5).Value = FormatNumber(oParams.Item(i).Value, 1) '& " oE" Case Else xlWS.cells(iRow, 5).Value = oParams.Item(i).Value End Select xlWS.cells(iRow, 6).Value = oParams.Item(i).ExposedAsProperty Select Case oParams.Item(i).HealthStatus Case kDeletedHealth xlWS.cells(iRow, 7).Value = "Deleted" Case kDriverLostHealth xlWS.cells(iRow, 7).Value = "Driver Lost" Case kInErrorHealth xlWS.cells(iRow, 7).Value = "In Error" Case kOutOfDateHealth xlWS.cells(iRow, 7).Value = "Out of Date" Case kUnknownHealth xlWS.cells(iRow, 7).Value = "Unknown" Case kUpToDateHealth xlWS.cells(iRow, 7).Value = "Up to Date" End Select Next XL.cells.Select XL.cells.EntireColumn.AutoFit xlWS.Range("A1").Select Set xlWS = Nothing Set xlWB = Nothing Set XL = Nothing End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Traxtormer Mitglied
Beiträge: 59 Registriert: 12.04.2016 Windows 10 64-bit / Inventor Professional 2023
|
erstellt am: 28. Okt. 2017 13:04 <-- editieren / zitieren --> Unities abgeben:
Hallo xerxses, vielen Dank für die Antwort, jetzt habe ich dich verstanden! Das ist natürlich noch praktischer! Habe den Pfad und Blattnamen wie du geschrieben hast geändert, leider bekomme ich aber bei folgender Zeile (lt. Debu-Modus) schon einen Fehler: Set XL = CreateObject("Excel.Application") Um genauer zu sein: Run-time error 429 Irgendwie dürfte er das Excel nicht öffnen können (Version: Excel 2016) oder er hängt sich dann gleich auf. Weisst du an was das liegen könnte? Muss die Datei existieren? Kommt die Endung, sprich Dateityp, auch in den Pfad&Dateiname mit rein, und wenn ja, muss es ein xlsm sein oder ein anderes? LG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV 2018 ACADM 2018
|
erstellt am: 28. Okt. 2017 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für Traxtormer
ja die angegebene Datei muss existieren. es muss keine xlsm sein. hauptsache eine Excel-Datei und ja die Endung sollte mit rein. das hat allerdings mit dem Fehler nix zu tun. weil die Zeile ja noch vor der zum Öffnen der Datei ist. schau mal bitte im VBA Editor/Extras/Verweise ob die selben Verweise wie bei mir angeklickt sind. siehe Bild Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Traxtormer Mitglied
Beiträge: 59 Registriert: 12.04.2016 Windows 10 64-bit / Inventor Professional 2023
|
erstellt am: 29. Okt. 2017 18:26 <-- editieren / zitieren --> Unities abgeben:
|
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV 2018 ACADM 2018
|
erstellt am: 29. Okt. 2017 19:55 <-- editieren / zitieren --> Unities abgeben: Nur für Traxtormer
|
Traxtormer Mitglied
Beiträge: 59 Registriert: 12.04.2016 Windows 10 64-bit / Inventor Professional 2023
|
erstellt am: 16. Nov. 2017 08:26 <-- editieren / zitieren --> Unities abgeben:
Hallo xerxes! Nach Foren lesen und späterer kompletter Neuinstallation von Windows, Office & Inventor bekomme ich immer noch den selben Fehler (429, wie erwähnt). Ich gebe auf! Hat jemand eine Vorlage um per Makro ein xml in Excel einzulesen?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |