| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Stückliste per Makro auslesen (3310 mal gelesen)
|
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 20. Aug. 2012 13:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Inventorgemeinde Ich bin neu im VBA Forum (blutiger Anfänger) und habe mich mal hier durch das Thema Stückliste per Makro auslesen gelesen und einen interessanten Betrag von noctis79 gefunden. Der Code von noctis79 funktioniert soweit gut. Was mir allerdings aufgefallen ist es kommt beim Makrodurchlauf zu einer Fehlermeldung (siehe Bild). Wenn ich bei der Fehlermeldung auf ok klicke läuft das Makro durch und liest die Stückliste aus und schreibt sie in Excel, soweit so gut. Aber in zweiten Teil (Excel Anteil)des Makros soll hier die Partnummer u. Benennung reingeschrieben werden. Macht sie aber nicht. Kann es sein das hier die Variabele oName leer bleibt? Der vollständige Code ist beigefügt. oExl.Workbooks.Open (oXLSFileName) With oExl.ActiveWorkbook .Sheets(oName).Cells(2, 1) = oPartNumber .Sheets(oName).Cells(2, 5) = oDescription .Close 1
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 20. Aug. 2012 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
|
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 20. Aug. 2012 15:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf Meine iProperties sind ausgefüllt. Habe aber mal den Code noch einmal angepasst, mir ist auf gefallen ich habe ja deutsche iPrperties-Benennungen und keine englischen. Leider funktionier es immer noch nicht wie ich es mir vorstellen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 20. Aug. 2012 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
|
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 23. Aug. 2012 10:09 <-- editieren / zitieren --> Unities abgeben:
Hallo tut mir leid das ich mich erst jetzt melde. War aud Dienstreise. Das mit der Fehlermeldung habe ich behoben (hatte im Verzeichnisnamen einen Dreher drin). Also das Makro liest mir die Stückliste jetzt aus und speichert sie bei mir auf C:\temp mit Bauteilnummer ab. Soweit so gut, aber mit der Bezeichung geht es noch nicht. Ein Kollege von mir meinte vielleicht gibt es Probleme mit dem Namen (Bezeichnung/ Description) hat sich hier etwas in IV 2013 geändert? Ab der Version 2013 gibt neu die Sprachpakete für IV. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Aug. 2012 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Hi Nicht das ich wüßte. Man sollte aber generell die internen Namen verwenden, da die sich definitiv nicht ändern werden. Kannst ja testen, ersetz mal: Code: For Each i In oProp If i.DisplayName = "Bezeichnung" Then oDescription = i.Expression ElseIf i.DisplayName = "Bauteilnummer" Then oPartNumber = i.Expression End If Next
durch:
Code: For Each i In oProp If i.Name = "Description" Then oDescription = i.Expression ElseIf i.DisplayName = "Bauteilnummer" Then oPartNumber = i.Expression End If Next
Wenn's dann wieder nicht geht, poste bitte nochmal deinen aktuellen Code und eine Kopie der Stücklistenvorlage, die du verwendest. Enthaltene Firmennamen und ähnliches vorher rauslöschen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 23. Aug. 2012 11:07 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Aug. 2012 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Hallo Ich hab's probiert. Bei mir schreibt er das iProp Bezeichnung raus. Ich konnte allerdings deine Vorlage (Excel2010?) nicht verwenden. Die sollte es aber nicht sein, sonst würde der ganze Export scheitern. Oder ist Zelle F2 über "Zellen verbinden" verbunden mit einer anderen Zelle. Dann entferne das bitte mal testweise. Nur nochmal zur Sicherheit, wir reden von dem iProp im angehängten Screenshot?
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 23. Aug. 2012 14:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf ja wir reden über das iProperties Bezeichnung wie in Deiner Abbildung.Ich habe es mit i.Name, und i.DisplayName probiert. Leider kein Erfolg. Welche IV Version hast Du? Ich gehe davon aus Du hast auch wie ich eine Baugruppe erstellt und dann eine Ableitung gemacht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bwr Mitglied Konstrukteur
Beiträge: 129 Registriert: 21.02.2007
|
erstellt am: 23. Aug. 2012 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Ich hab's nicht getestet, aber schau mal nach im Debugger nach ob bei "oDescription" und "oPartNumber" überhaupt was drin steht weil du i.Expression holst. Ich hätte es stattdessen mit i.Value probiert. Gruß Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 23. Aug. 2012 14:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi habs mit i.value probiert ging auch nicht.Mir ist aber jetzt was aufgefallen schau Dir mal die Bilder an. In der IDW Eigenschaften- Modell steht Beschreibung in den iProperties der Baugruppe\Bauteile steht Bezeichnung. Ich kann auch nicht inden Eigenschaft-Modell in der IDW etwas anderes auswählen.Die IAM IPT u. IDW Vorlage sind orginal IV. Ist mir auf gefallen nach dem ich IV 2011 bei einem Kollegen geöffnet habe. Wes jemand wieso das bei IV 2013 auftritt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 23. Aug. 2012 15:06 <-- editieren / zitieren --> Unities abgeben:
|
bwr Mitglied Konstrukteur
Beiträge: 129 Registriert: 21.02.2007
|
erstellt am: 23. Aug. 2012 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Aug. 2012 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Hallo Ja, eine Baugruppe und Zeichnungsableitung davon. Der Code ist sauber, der läuft bei mir mit 2011 und 2013 problemlos. Kannst du mal eine Demobaugruppe machen, die iProps füllen (mit Fantasiename und -teilenummer), Zeichnung mit Teileliste davon (Schriftfeld entfernen) erstellen und das als Zip hier reinstellen, falls mit der Demo-BG die gleichen Probleme auftreten? Die Bezeichnung die im Textfelddialog angezeigt wird, ist mM ein typischer Übersetzungsfehler im Inventor. Mal übersetzt man Description mit Bezeichnung, mal mit Benennung, mal übersetzt man back mit zurück, mal mit hinten, usw. usw. Nur wundern. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volker E Mitglied Konstrukteur
Beiträge: 164 Registriert: 20.08.2012 Win 7 64 bit, Inventor 2015 Sp2 64 bit Intel Xeon CPU E5-1607 3,00 GHz 32GB RAM Nvidia Quadro 4000 Space Explorer
|
erstellt am: 24. Aug. 2012 08:04 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 24. Aug. 2012 19:10 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Hallo In deiner Beispielzeichnung ist das iPropertie "Bezeichnung" leer. Kein Wunder das in der Exceltabelle nix ankommt. Entweder füllst du dieses oder du ersetzt das Code: For Each i In oProp If i.Name = "Description" Then oDescription = i.Expression ElseIf i.DisplayName = "Bauteilnummer" Then oPartNumber = i.Expression End If Next
mit dem Code: For Each i In oProp If i.DisplayName = "Bauteilnummer" Then oPartNumber = i.Expression End If NextDim oReferencedDoc As Document Set oReferencedDoc = odoc.ReferencedDocuments.Item(1) Set oProp = oReferencedDoc.PropertySets.Item("Design Tracking Properties") For Each i In oProp If i.Name = "Description" Then oDescription = i.Expression End If Next
Bedenke aber, das das nur funktioniert wenn immer nur eine Baugruppe pro Zeichnung dargestellt wird. Werden mehrere Baugruppen in einer IDW (auf einem Blatt oder mehreren spielt keine Rolle) dargestellt, wird nur die Bezeichnung der ersten Baugruppe übernommen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
panikkalle Mitglied Konstrukteur
Beiträge: 5 Registriert: 24.01.2009
|
erstellt am: 24. Aug. 2012 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für Volker E
Hallo Ralf Du hast natürlich Recht man sollte die Properties schon ausfüllen. Habe den Wald vor lauter Bäumen nicht mehr gesehen. Bin in Inventor eben noch ein Anfänger. Nochmals Danke für die schnelle Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |