Hallo zusammen, ich möchte die Eigenschaften " Titel " und " Schlüsselwörter " meiner Solidworks-Dateien wiederherstellen Ich sagte mir, dass es mit Power Query und Presto einfach werden würde. Und schwupps, funktioniert es nicht
Die Idee war, diese beiden Eigenschaften meiner Solid-Dateien aus einem Verzeichnis in einer Excel-Tabelle abzurufen Es funktioniert teilweise, ich kann viele Eigenschaften wiederherstellen, aber nicht diese, während Windows sie mir zeigt über VBA, habe ich auch geschaut, aber nichts Überzeugendes (außerdem bin ich kein VBA-Experte) Ich habe auch nicht die sichtbaren Tools Ist das machbar? und mit welchen Mitteln
Im Anhang finden Sie ein Beispiel zur Inspiration Voraussetzung 1, Öffnen Sie SW mit all Ihren Dokumenten, die Sie extrahieren möchten, um die Informationen zu extrahieren (eine Alternative, um den Ordner zu durchsuchen und dann alle Dokumente mit VBA zu öffnen) 2, Excel-Datei öffnen 3, Makro-Stream 4, Geben Sie die Referenz " SOLIDWORKS 20** type/command/constant lib " in Extras >Referenz ein. 5, Erkundigen Sie sich nach der richtigen Version von SW.
Option Explicit
Dim swapp As SldWorks.SldWorks
Dim swmodel As ModelDoc2
Sub test()
Set swapp = GetObject("", "sldworks.application.26") '2022 > 30
'2021 > 29
'2020 > 28
'...
Dim row As Long
row = 1
Cells(row, 1).Value = "Title"
Cells(row, 2).Value = "Author"
Cells(row, 3).Value = "Key words"
Set swmodel = swapp.GetFirstDocument
While Not swmodel Is Nothing
If swmodel.Visible Then
row = row + 1
Cells(row, 1).Value = swmodel.GetTitle()
Cells(row, 2).Value = swmodel.SummaryInfo(swSumInfoAuthor)
Cells(row, 3).Value = swmodel.SummaryInfo(swSumInfoKeywords)
End If
Set swmodel = swmodel.GetNext
Wend
End Sub
Ergebnis
(Wenn Sie alle Komponenten (Unterbaugruppen) der Baugruppen und Referenzkomponenten einbeziehen möchten, entfernen Sie einfach die Sichtbarkeitsbedingung, sehr praktisch, wenn Sie eine Baugruppe öffnen, und alles wird in Excel aufgenommen.)
Natürlich wäre es ideal, docmanager zu verwenden, wenn Sie einen Schlüssel haben, es ist optimaler, da es notwendiger ist, alles mit sw zu öffnen,
Ansonsten habe ich für eine vollständige Excel-Version Folgendes gefunden:
Sub test2()
Dim sfile As Variant
Dim oshell As Object
Dim odir As Object
Set oshell = CreateObject("shell.application")
Set odir = oshell.Namespace("C:\Users\dell\Desktop\test")
Dim row As Long
row = 1
Cells(row, 1).Value = "Title"
Cells(row, 2).Value = "Author"
Cells(row, 3).Value = "Key words"
For Each sfile In odir.Items
'For i = 0 To 40
'Debug.Print i & " : " & odir.getdetailsof(sfile, i)
'Next
row = row + 1
Cells(row, 1).Value = odir.getdetailsof(sfile, 0)
Cells(row, 2).Value = odir.getdetailsof(sfile, 20)
Cells(row, 3).Value = odir.getdetailsof(sfile, 18)
Next
End Sub
Einfach und effizient (es bleibt nur die Verwaltung von Dateitypen übrig, oder für den Fall, dass der Ordner andere Dateien als SOLIDWORKS enthält)
Möglicherweise habe ich den "Titel" falsch interpretiert, anscheinend ist es nicht gettitle(), sondern summaryinfo(swsuminfotitle), für das 2. Beispiel der Hinweis auf meine Windows 10- und 21-Konfiguration