Recuperer proprietés

Bonjour à tous, je cherche à récupérer les propriétés « titre » et « mots clé » de mes fichiers Solidworks
je me suis dit que ça allait être simple avec power query et hop
et hop ça ne fonctionne pas


l’idée était de récupérer ces deux propriétés de mes fichiers solid d’un répertoire dans un tableau Excel
ça fonctionne en partie, je peux récupérer pas mal de propriétés, mais pas celle-ci alors que Windows me les affiche
via VBA, j’ai cherché aussi, mais rien de probant (en plus, je ne suis pas expert vba)
je n’ai pas les outils visiativ non plus
est-ce faisable ? et par quel biais

merci

Bonjour,

Sauf erreur de ma part ce n’est pas accessible via les API Windows. Il faut regarder du côté de document manager dans les API Solidworks

3 « J'aime »

Ok, je vais regarder dans ce sens
c’est dommage parce que Windows les affiche bien

Bonjour,
@SOFAME, vous cherchez a avoir ces propriété dans excel depuis solidworks ou bien windows (excel) ?

Disons que je souhaitais le faire à partir de Windows mais visiblement pas faisable
donc oui certainement depuis SolidWorks.

Ci-joint un exemple pour s’inspirer
Pré-requis
1, ouvrir sw avec tout vos documents que vous voulez extrair les infos ( une alternative ces de parcourir le dossier puis ouvrir tout les doc par vba)
2, ouvrir le fichier excel
3, volet macro
4, renseigner la référence « solidworks 20** type/command/constant lib » dans tools >reference.
5,renseigner la bonne version de 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

Résultat
Capture_SUMMARYINFO

(si vous voulez inclure tous les composants (sous assemblage) des assemblages, composants de référence, y’a qu’a supprimer la condition de visibilité, très pratiques vous ouvrez un assemblage, et tout sera inclus dans excel :wink:)

Bien sûr l’idéale serait d’utiliser docmanager si vous disposez d’une clé, ça va être plus optimal vu que ça sera plus besoin de tout ouvrir avec sw,

Sinon pour une version entièrement excel, j’ai trouvé Ceci

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

Simple et efficaces (reste seulement la gestion des types de fichiers, où cas où le dossier contient d autre fichier que solidworks ) :wink:

Merci pour ces réponses, je vais regarder cela et je vous tiens informé

J’ai peut-être mal interpréter le « titre », apparemment c’est pas gettitle() mais plutôt summaryinfo(swsuminfotitle), pour le 2ème exemple l’indice sur ma configuration de windows 10 et 21