| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: in Iprop Feld Geändert erreichen (1414 mal gelesen)
|
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 06. Jan. 2016 14:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen ich möchte gerne das Datum im Feld "Geändert" in Ipropertie erreichen. Dieses Datum soll in einer bestehenden VBA eingebunden werden. Wie muss der Code aussehen? Übrigens alles Gute und viel Erfolg im neuen Jahr. Gruß Didi ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 07. Jan. 2016 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hi, kannst Dir ja mal alle iProps auslesen lassen. Code: Sub Props()Dim odoc As Inventor.Document Set odoc = ThisApplication.ActiveDocument Dim oPropertySet As PropertySet Dim oProp As Property For Each oPropertySet In odoc.PropertySets For Each oProp In oPropertySet Debug.Print oPropertySet.Name & " - " & oProp.Name & " - " & oProp.Value Next Next End Sub
Glaube aber nicht, das da was in den iProperties steht. Versuchs mal mit Code: msgbox FileDateTime(odoc.FullFileName)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 07. Jan. 2016 14:04 <-- editieren / zitieren --> Unities abgeben:
Hi, die Box zeigt mir den richtigen Wert an. Ich habe nun versucht, den Wert FileDateTime in meinem Code unterzubringen, was allerdings nicht klappt. Hier der Ausschnitt, wobei Dim u und Set oProp3 neu eingebunden wurden. Wahrscheinlich ist "Inventor General Information" nicht richtig Code: Dim i As Property Dim e As Property Dim u As Property Dim oDescription As String Dim oTitle As String Dim oAuthor As String Dim oFileDateTime As String Dim oPartNumber As String Dim oRevision As String Dim oProject As String Dim oCreationDate As String Set oProp = odoc.PropertySets.Item("Design Tracking Properties") Set oProp2 = odoc.PropertySets.Item("Inventor Summary Information") Set oProp3 = odoc.PropertySets.Item("Inventor General Information")For Each i In oProp If i.DisplayName = "Bauteilnummer" Then oPartNumber = i.Expression ElseIf i.DisplayName = "Erstellungsdatum" Then oCreationDate = i.Expression End If If i.DisplayName = "Projekt" Then oProject = i.Expression ElseIf i.DisplayName = "Konstrukteur" Then oDesigner = i.Expression End If Next For Each e In oProp2 If e.DisplayName = "Titel" Then oTitle = e.Expression ElseIf e.DisplayName = "Autor" Then oAuthor = e.Expression End If Next For Each u In oProp3 If u.DisplayName = "Geändert" Then oFileDateTime = u.Expression End If Next
------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 07. Jan. 2016 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hi, Code: For Each u In oProp3 If u.DisplayName = "Geändert" Then oFileDateTime = u.Expression End If Next
Kannst Du komplett weglassen. FileDateTime ist eine eigene VB- Funktion. Schreib doch einfach Code: oFileDateTime = FileDateTime(odoc.FullFileName)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 07. Jan. 2016 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hallo Didi Sub Setze_Iprop_Erstellungsdatum() Dim ddate As Date ' wenn Datei noch nicht gespeichert wurde: If ThisApplication.ActiveDocument.FileSaveCounter = 0 Then ddate = Now Else 'sonst Zeit von Datei ddate = FileDateTime(ThisApplication.ActiveDocument.FullFileName) End If 'und schreiben: ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Creation Time").Value = ddate End Sub '...alles ohne Gewähr und errorhandling Boris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 07. Jan. 2016 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Sorry, Code-Tags vergessen... Code:
Sub Setze_Iprop_Erstellungsdatum() Dim ddate As Date ' wenn Datei noch nicht gespeichert wurde: If ThisApplication.ActiveDocument.FileSaveCounter = 0 Then ddate = Now Else 'sonst Zeit von Datei ddate = FileDateTime(ThisApplication.ActiveDocument.FullFileName) End If 'und schreiben: ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Creation Time").Value = ddate End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 08. Jan. 2016 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, es sind oft die einfachen Dinge, die man übersieht. Mit der VB-Funktion von Noctis79 hat es funktioniert - Danke. Auch dir, bkrüger mein Dank. Ich wollte aber auf das Änderungsdatum zugreifen und nicht auf das Erstellungsdatum. Dann hätte ich doch noch eine Frage. Wie kann ich bei dem Code oFileDateTime = FileDateTime(odoc.FullFileName) das Ergebnis so filtern, dass nur das Datum angezeigt wird? Gruß Didi ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 08. Jan. 2016 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Ok, dann so: Code:
Sub Setze_Iprop_Aenderungsdatum()Dim oFSO As New FileSystemObject ' ggf. Verweis setzen (?) Dim ofil As Object Dim strDateiname As String Dim ddate As Date Dim strdate As String strDateiname = ThisApplication.ActiveDocument.FullFileName ' kommentarlos raus, wenn Datei nicht existiert: If Not oFSO.FileExists(strDateiname) Then Exit Sub 'Object init: Set ofil = oFSO.GetFile(strDateiname) 'ddate = ofil.DateCreated ' Datei erzeugt ddate = ofil.DateLastModified ' Datei geändert ' die gewünschte Formatierung: strdate = Format(ddate, "dd.mm.yyyy") 'und Iprop schreiben: ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Creation Time").Value = strdate End Sub
wie immer: ohne Gewähr, eingeschränktes Errorhandling Klar, das geht möglicherweise auch effizienter. Boris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Leiter (m/w/d) Konstruktion | Verantwortung übernehmen. Zukunft gestalten. Und die eigenen Ziele übertreffen. Das ist FEIN. Wir, die C. & E. Fein GmbH, suchen ab sofort für unseren Bereich Innovation eine/n Leiter (m/w/d) Konstruktion Wir gehen neue Wege ? Sie auch? Seit über 150 Jahren treiben uns die Entwicklung, Herstellung und Vermarktung von Elektrowerkzeugen in Spitzen- qualität wie einen Hochleistungsmotor an.... | Anzeige ansehen | Teamleitung, Gruppenleitung |
|
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 08. Jan. 2016 15:18 <-- editieren / zitieren --> Unities abgeben:
|