J'ai terminé la macro pour traiter toutes les mise en plan d'un répertoire.
La macro ouvre une boite de dialogue pour sélectionner un fichier à ouvrir.
Elle récupère ensuite l'emplacement du fichier et traite toutes les mises en plan s'y trouvant.
Voici le code :
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swModelExt As SldWorks.ModelDocExtension
Dim boolstatus As Boolean
Dim ExportData As Object
Dim Warnings As Long, Errors As Long
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Scripting.Folder
Dim oFile As Scripting.File
Dim chemin As String
Dim Filter As String
Dim fileName As String
Dim fileConfig As String
Dim fileDispName As String
Dim fileOptions As Long
Sub main()
Set swApp = Application.SldWorks
'filtre sur mise en plan
Filter = "Mise en plan (*.slddrw)|*.slddrw|"
'ouverture boite de dialogue
fileName = swApp.GetOpenFileName("Sélectionner un fichier", "", Filter, fileOptions, fileConfig, fileDispName)
'vérif fichier sélectionné
If fileName = "" Then Exit Sub
'récupération du chemin
chemin = Left(fileName, InStrRev(fileName, "\"))
'déclaration FSO
Set oFSO = New Scripting.FileSystemObject
Set oFld = oFSO.GetFolder(chemin)
'boucle sur les fichiers du répertoire "chemin"
For Each oFile In oFld.Files
'test type de fichier = mise en plan
If oFile.Type = "SolidWorks Drawing Document" Then
'ouverture de la mise en plan
Set swModel = swApp.OpenDoc6(oFile.Path, swDocDRAWING, 1, "", Errors, Warnings)
Set swModelExt = swModel.Extension
'sauvegarde version attaché
boolstatus = swModelExt.SaveAs(oFile.Path, 3, 1, ExportData, Errors, Warnings)
'fermeture du fichier
swApp.CloseDoc swModel.GetTitle
End If
Next oFile
End Sub