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