Eigenschaften wiederherstellen

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

Vielen Dank

Hallo

Wenn ich mich nicht irre, ist es nicht über Windows-APIs zugänglich. Sie müssen sich die Seite des Dokumentenmanagers in den Solidworks APIs ansehen

3 „Gefällt mir“

Okay, ich werde so aussehen
Es ist eine Schande, weil Windows sie gut anzeigt

Hallo
Möchten Sie diese Eigenschaften @SOFAME in Excel von Solidworks oder Windows (Excel) haben?

Nehmen wir an, ich wollte es von Windows aus tun, aber offensichtlich nicht machbar
also ja, sicherlich von SolidWorks.

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
Capture_SUMMARYINFO

(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 :wink: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) :wink:

Vielen Dank für diese Antworten, ich werde mich darum kümmern und Sie auf dem Laufenden halten

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