Eigenschappen herstellen

Hallo allemaal, ik ben op zoek naar herstel van de " titel " en " trefwoorden " eigenschappen van mijn Solidworks-bestanden
Ik zei tegen mezelf dat het eenvoudig zou worden met Power Query en presto.
En presto, het werkt niet


het idee was om deze twee eigenschappen van mijn solide bestanden op te halen uit een map in een Excel-tabel
het werkt gedeeltelijk, ik kan veel eigenschappen herstellen, maar niet deze terwijl Windows ze me laat zien
via VBA, ik keek ook, maar niets overtuigends (trouwens, ik ben geen VBA-expert)
Ik heb ook niet de visiativ tools
Is het haalbaar? en met welke middelen

Bedankt

Hallo

Tenzij ik me vergis, is het niet toegankelijk via Windows-API's. Je moet kijken naar de kant van de documentmanager in de Solidworks API's

3 likes

Oké, ik zal er zo uitzien
het is jammer, want Windows geeft ze goed weer

Hallo
@SOFAME, wilt u deze eigenschappen in Excel hebben vanuit Solidworks of Windows (Excel)?

Laten we zeggen dat ik het vanuit Windows wilde doen, maar natuurlijk niet haalbaar
dus ja zeker van SolidWorks.

Bijgevoegd is een voorbeeld om te inspireren
Voorwaarde
1, Open SW met al uw documenten die u wilt extraheren de info (een alternatief om door de map te bladeren en vervolgens alle documenten door VBA te openen)
2, Open Excel-bestand
3, Macrostroom
4, Vul de referentie " SOLIDWORKS 20** type/command/constant lib " in Tools >reference.
5, Informeer naar de juiste versie van 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

Resultaat
Capture_SUMMARYINFO

(Als u alle componenten (subassemblage) van de assemblages, referentiecomponenten wilt opnemen, verwijdert u gewoon de zichtbaarheidsvoorwaarde, erg handig dat u een assemblage opent en alles wordt opgenomen in Excel :wink:)

Het ideaal zou natuurlijk zijn om docmanager te gebruiken als je een sleutel hebt, het zal optimaler zijn omdat het meer nodig zal zijn om alles met sw te openen,

Anders vond ik voor een volledige Excel-versie dit

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

Eenvoudig en efficiënt (alleen het beheer van bestandstypen blijft over, of in het geval dat de map andere bestanden bevat dan solidworks) :wink:

Bedankt voor deze antwoorden, ik zal dit onderzoeken en ik zal u op de hoogte houden

Ik heb misschien de "titel" verkeerd geïnterpreteerd, blijkbaar is het niet gettitle() maar eerder summaryinfo(swsuminfotitle), voor het 2e voorbeeld de aanwijzing op mijn Windows 10 en 21 configuratie