Récuperer/Ecrire propriétés personalisés avec Excel sans methode DSO (Inactive depuis 2015)

Bonjour,

J'avais fait un bout de code pour récupérer des propriétés personnalisées dans Excel et les mettre à jour sans ouvrir les fichiers avec le code suivant :

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As SldWorks.PackAndGo
Dim openFile As String
Dim myFileName As String
Dim pgFileNames As Variant
Dim pgFileStatus As Variant
Dim pgSetFileNames() As String
Dim pgGetFileNames As Variant
Dim pgDocumentStatus As Variant
Dim status As Boolean
Dim warnings As Long
Dim errors As Long
Dim i As Long
Dim j As Long
Dim namesCount As Long
Dim myPath As String
Dim statuses As Variant

Public Chemin, OldFile As String
Public Ligne1, DernligneASM

Sub ListerOldFichiers()

Dim Fichier As String

Range("A2:B1000") = "" 'Vidage des cellules

Chemin = CheminUser
OldFile = Dir(Chemin & "*.sldasm")

'Appel de la progressbar

UserForm1.Show vbModeless
UserForm1.ProgressBar1.Value = 0

Dim ProgressBar, barre

UserForm1.ProgressBar1.Value = 10

'Ecrire les noms de fichiers dans colone A

Ligne1 = 2 'Départ pour rentrer les noms de fichiers

    Do While OldFile <> ""
    
        Cells(Ligne1, 1) = OldFile
        OldFile = Dir()
        Ligne1 = Ligne1 + 1
    
    Loop

DernligneASM = Range("a65536").End(xlUp).Row

Dim Dernligne2
Dernligne2 = Range("a65536").End(xlUp).Row + 1

OldFile = Dir(Chemin & "*.sldprt")

    Do While OldFile <> ""
    
        Cells(Dernligne2, 1) = OldFile
        OldFile = Dir()
        Dernligne2 = Dernligne2 + 1
        
    Loop

UserForm1.ProgressBar1.Value = 50


Dim Dernligne3
Dernligne3 = Range("a65536").End(xlUp).Row

Ligne1 = 2

For Ligne1 = Ligne1 To Dernligne3
        
        Dim DSO As DSOFile.OleDocumentProperties
        Dim File1, OldDes, k, PropName, Compteur
        
        File1 = Cells(Ligne1, 1).Value
        
        Set DSO = New DSOFile.OleDocumentProperties
        DSO.Open sfilename:=Chemin & File1
        
        Compteur = DSO.CustomProperties.Count
        
        If Compteur <> 0 Then
        
            For k = 1 To Compteur - 1
            
                PropName = DSO.CustomProperties.Item(k).Name
            
                If PropName = "Designation-1" Then
                
                    OldDes = DSO.CustomProperties.Item("Designation-1").Value
                    Cells(Ligne1, 2) = OldDes
                
                End If
                
            Next k

        End If
            
        DSO.Save
        DSO.Close
 
Next

'Fini de remplir et Decharger l'userform

barre = 100
UserForm1.ProgressBar1.Value = barre
Unload UserForm1
ProgressBar = 0 'Réinitialisation

MsgBox "Remplissez la colonne des Nouveaux noms a attribuer puis cliquez sur ''Renommer''"

End Sub

 

Mon souci est que depuis SW2015, on ne peut pas faire ces étapes puisque la méthode avec DSO ne fonctionne plus.

Ma question est : Comment pouvoir faire ce que je faisais avec DSO avec SW2016 (ou SW2015) ?

Merci

 

Avec macro je ne sais pas d'autre te guideront surement, mais comme tu as les outil mycad tu peux aussi le faire avec smartbom qui t'exporte une nomenclature avec les propriétés choisit et cela sans savoir programmé en vba ou autre.

Bonjour,

Pour récupérer, par macro, des propriétés personnalisées dans Excel et les mettre à jour sans ouvrir les fichiers il va te falloir "jouer" avec les "Document Manager API" (voir ici), ce qui nécessite l'obtention d'un numéro de licence (voir ici). Ensuite, tu trouveras ici un exemple de code (en C#) à adapter.

La solution de sbadenis me semble beaucoup plus simple et rapide à mettre en oeuvre et fait appel à des outils qui seront maintenus dans le temps.

Cordialement,

Bonjour et merci pour vos infos.

Le truc c'est que je ne fais pas que récuperer des données pour les mettre dans Excel... Je renomme tous mes fichiers, tout en leur mettant à jour leur propriétés et je redonne les liens aux MEP.

A ma connaissance, les outils MyCad ne font pas ça et SW Explorer ne redonnant pas le lien aux MEP il est pas super pratique...

L'avantage de cette méthode était que la lisibilité sous Excel est juste parfait pour ce genre de traitement. Voyez plutôt l'image en PJ.

 

 


capture.jpg
1 « J'aime »

Avec project manager dans ce cas tu peux renommer en masse suivant certaine règle et modifier certaines propriétés suivant certaine règle également. Et bien sur tu récupère les MEP.

Et si tu n'arrive pas à faire ce que tu veux le combo project manager pour copier renommer en masse puis batch properties pour modifier les propriétés.

A tester cela ne te coutera qu'un peu de temps et si besoin on t'expliquera comment faire.

Bonjour,

Je ne souhaite pas renommer suivant des règles en fait.

Imaginons que mon client tarde a me fournir des n° de plan suivant son système de gestion de données. Je vais donc débuter (voir terminer) mon étude avec des noms de fichiers qui porteront des noms du type : Axe, Carter inf, carter sup, etc...

Une fois qu'il me dit que mes fichiers (PRT, ASM et DRW) doivent s'appeler par exemple : 2543-40001; 2543-40002; 2543-40003; 2543-40004; etc... je dois pouvoir renommer les fichiers en gardant les liens et en respectant sa numérotation.

C'est ce que me permettait de faire ma macro EXCEL qui listait les noms de fichiers en me mettant les propriétés en face de chaque pièce et ensuite, je n'avait qu'à dire quel n° allait en face de tel ou tel pièce... pareil pour les propriétés... et le tout SANS ouvrir SW !

Le seul moment où j'avais besoin de SW c'était pour redonner les liens des MEP.

Là avec project manager, je pense pas que je puisse être aussi flexible !

1 « J'aime »

Répondre avec Project manager tu peux renommer en masse suivant des règle ou bien comme tu le souhaite renommer pièce par pièce suivant ce qu tu désire.

En 1 tu choisi la pièce ou assemblage à renommer en 2 règle de renommage à appliquer (dans ton cas aucune règle)

En 3 le résultats de la règle appliqué ou bien si pas de règle renommage manuel possible.

En 4 appliqué la modification pour toutes les pièces avec la règle ou bien pour la pièce et passer à la suivante.

 

Pour les règle possibilité de renommer en fonction d'un compteur, d'une propriété...

Le plus simple fait un essai sur un petit assemblage je suis persuadé que tu arriveras à réalisé ton besoin.

Et si besoin le forum est là pour t'aider!

Pour info Project Manager en plus d'être très complet est aussi très flexible!

 


project_manager.png