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