Ich hatte einen Codeausschnitt erstellt, um benutzerdefinierte Eigenschaften in Excel abzurufen und zu aktualisieren, ohne die Dateien mit dem folgenden Code zu öffnen:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As SldWorks.PackAndGo
Dim openFile As String
Dim myFileName As String
Dim pgFileNames As Variant
Dim pgFileStatus As Variant
Dim pgSetFileNames() As String
Dim pgGetFileNames As Variant
Dim pgDocumentStatus As Variant
Dim status As Boolean
Dim warnings As Long
Dim errors As Long
Dim i As Long
Dim j As Long
Dim namesCount As Long
Dim myPath As String
Dim statuses As Variant
Public Chemin, OldFile As String
Public Ligne1, DernligneASM
Sub ListerOldFichiers()
Dim Fichier As String
Range("A2:B1000") = "" 'Vidage des cellules
Chemin = CheminUser
OldFile = Dir(Chemin & "*.sldasm")
'Appel de la progressbar
UserForm1.Show vbModeless
UserForm1.ProgressBar1.Value = 0
Dim ProgressBar, barre
UserForm1.ProgressBar1.Value = 10
'Ecrire les noms de fichiers dans colone A
Ligne1 = 2 'Départ pour rentrer les noms de fichiers
Do While OldFile <> ""
Cells(Ligne1, 1) = OldFile
OldFile = Dir()
Ligne1 = Ligne1 + 1
Loop
DernligneASM = Range("a65536").End(xlUp).Row
Dim Dernligne2
Dernligne2 = Range("a65536").End(xlUp).Row + 1
OldFile = Dir(Chemin & "*.sldprt")
Do While OldFile <> ""
Cells(Dernligne2, 1) = OldFile
OldFile = Dir()
Dernligne2 = Dernligne2 + 1
Loop
UserForm1.ProgressBar1.Value = 50
Dim Dernligne3
Dernligne3 = Range("a65536").End(xlUp).Row
Ligne1 = 2
For Ligne1 = Ligne1 To Dernligne3
Dim DSO As DSOFile.OleDocumentProperties
Dim File1, OldDes, k, PropName, Compteur
File1 = Cells(Ligne1, 1).Value
Set DSO = New DSOFile.OleDocumentProperties
DSO.Open sfilename:=Chemin & File1
Compteur = DSO.CustomProperties.Count
If Compteur <> 0 Then
For k = 1 To Compteur - 1
PropName = DSO.CustomProperties.Item(k).Name
If PropName = "Designation-1" Then
OldDes = DSO.CustomProperties.Item("Designation-1").Value
Cells(Ligne1, 2) = OldDes
End If
Next k
End If
DSO.Save
DSO.Close
Next
'Fini de remplir et Decharger l'userform
barre = 100
UserForm1.ProgressBar1.Value = barre
Unload UserForm1
ProgressBar = 0 'Réinitialisation
MsgBox "Remplissez la colonne des Nouveaux noms a attribuer puis cliquez sur ''Renommer''"
End Sub
Meine Sorge ist, dass wir seit SW2015 diese Schritte nicht mehr ausführen können, da die DSO-Methode nicht mehr funktioniert.
Meine Frage ist: Wie kann ich das tun, was ich mit DSO mit SW2016 (oder SW2015) gemacht habe?
Mit Makro weiß ich nicht, dass ein anderer Sie sicherlich führen wird, aber da Sie das mycad-Tool haben, können Sie es auch mit smartbom tun, das Ihnen eine Nomenklatur mit den ausgewählten Eigenschaften exportiert und dies ohne zu wissen, programmiert in VBA oder andere.
Um benutzerdefinierte Eigenschaften in Excel per Makro abzurufen und zu aktualisieren, ohne die Dateien zu öffnen, müssen Sie mit der "Document Manager API" (siehe hier) "spielen", wofür Sie eine Lizenznummer erhalten müssen (siehe hier). Dann finden Sie hier ein Beispiel für Code (in C#) zum Anpassen.
Die sbadenis-Lösung scheint mir viel einfacher und schneller zu implementieren zu sein und verwendet Tools, die im Laufe der Zeit gepflegt werden.
Die Sache ist die, dass ich nicht nur Daten wiederherstelle, um sie in Excel abzulegen... Ich benenne alle meine Dateien um, aktualisiere ihre Eigenschaften und gebe die Links an die Abgeordneten zurück.
Soweit ich weiß, tun die MyCad-Tools das nicht und SW Explorer gibt den Link nicht an die MEPs zurück, also ist es nicht super praktisch...
Der Vorteil dieser Methode war, dass die Lesbarkeit in Excel für diese Art der Verarbeitung einfach perfekt ist. Sehen Sie sich stattdessen das Bild im Anhang an.
Mit dem Projektmanager können Sie in diesem Fall in großen Mengen nach einer bestimmten Regel umbenennen und bestimmte Eigenschaften auch nach einer bestimmten Regel ändern. Und natürlich gibt es die Abgeordneten des Europäischen Parlaments.
Und wenn Sie nicht tun können, was Sie möchten, können Sie mit der Kombination aus Projektmanager Eigenschaften kopieren, massenhaft umbenennen und dann Batch-Eigenschaften verwenden, um die Eigenschaften zu ändern.
Es zu testen kostet Sie nur ein wenig Zeit und bei Bedarf erklären wir Ihnen, wie es geht.
Ich möchte eigentlich nicht nach Regeln umbenennen.
Stellen wir uns vor, mein Kunde stellt mir nur langsam Plannummern gemäß seinem Datenmanagementsystem zur Verfügung. Also werde ich meine Studie mit Dateinamen beginnen (oder sogar beenden), die Namen haben werden wie: Axe, Inf Housing, Upper Rankcase, etc...
Einmal sagt es mir, dass meine Dateien (PRT, ASM und DRW) zum Beispiel aufgerufen werden sollen: 2543-40001; 2543-40002; 2543-40003; 2543-40004; etc... Ich muss in der Lage sein, die Dateien umzubenennen, während ich die Links beibehalte und die Nummerierung respektiere.
Das ist es, was mir mein EXCEL-Makro ermöglichte, das die Dateinamen auflistete, indem es die Eigenschaften vor jeden Teil setzte, und dann musste ich nur noch sagen, welche Nummer vor diesem oder jenem Teil stand... Das Gleiche gilt für die Eigenschaften... und das alles OHNE Öffnungs-SW!
Das einzige Mal, dass ich SW brauchte, war, um die Links des MEP wiederherzustellen.
Mit einem Projektmanager glaube ich nicht, dass ich so flexibel sein kann!