Macro export PDF en masse

Bonjour à tous,

Je suis à la recherche d'une macro qui me permettrais d'exporter en masse plusieurs Draft en PDF.

Je précise tout de suite que je ne possède que la version basique à mon bureau donc je n'ai pas la possibilité de planifier ce type de taches.

Merci

Tu peux apparemment le faire avec le Task sheduler:

https://www.youtube.com/watch?v=WgjajdK6CEc

 

Sinon avec des outils spécifique comme Cad+ (non testé):

https://cadplus.xarial.com/

 

Pour ma part j'utilise les utilitaires MyCADservices et plus particulièrement Intégration ou BatchConverters (très vite amortis pour des besoins récurant):

Intégration:https://help.visiativ.com/mycadtools/2020/fr/Integration.html

BatchConverter: https://help.visiativ.com/mycadtools/2020/fr/BatchConverter.html

 

 

1 « J'aime »

Bonjour;

Sinon je propose cette macro.
Ouvre tous les fichiers *.slddrw d'un répertoire et les sauvegarde sous le même nom en PDF.

Option Explicit

Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260

Function BrowseFolder(Optional Caption As String, Optional InitialFolder As String) As String

Dim SH As Shell32.Shell
Dim F As Shell32.Folder

Set SH = New Shell32.Shell
Set F = SH.BrowseforFolder(0&, Caption, BIF_RETURNONLYFSDIRS, InitialFolder)
If Not F Is Nothing Then
    If F = "Desktop" Then
        BrowseFolder = Environ("USERPROFILE") & "\Desktop"
    Else
        BrowseFolder = F.Items.Item.Path
    End If
End If

End Function

Sub Main()
Dim swApp        As SldWorks.SldWorks
Dim swModel      As SldWorks.ModelDoc
Dim sFileName    As String
Dim Path         As String
Dim nErrors      As Long
Dim nWarnings    As Long
Dim swDraw       As SldWorks.DrawingDoc
Dim PartNoDes    As String
Dim swExportPDFData As SldWorks.ExportPdfData


    Set swApp = Application.SldWorks
    Set swExportPDFData = swApp.GetExportFileData(1)
    swExportPDFData.ViewPdfAfterSaving = False
    
    Path = BrowseFolder("Selectionner le Repertoire à Traiter.")
    If Path = "" Then
        MsgBox "Erreur, Selectionnez le repertoire à nouveau."
        End
    Else
    Path = Path + "\"
    End If
         
    sFileName = Dir(Path & "*.slddrw")
    Do Until sFileName = ""
        Set swModel = swApp.OpenDoc6(Path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
        Set swModel = swApp.ActiveDoc
        Set swDraw = swApp.ActiveDoc
            PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
            PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
            swDraw.SaveAs3 Path & PartNoDes & ".PDF", 0, 0
        swApp.QuitDoc swDraw.GetPathName
        Set swDraw = Nothing
        Set swModel = Nothing
        sFileName = Dir
    Loop

MsgBox "Le Traitement est terminé."
End Sub

 

Cordialement.

2 « J'aime »

Merci,

comment doit on exécuter cette macro? Il faut ouvrir en amont tous les draft?

Bonjour;

Ben non, vous avez demandé un traitement en Batch....
Le plus simple est de vous créer un bouton/macro directement dans Solidworks.
Voir : https://www.lynkoa.com/forum/2d/creer-un-bouton-macro


A son lancement, ma macro va vous demander de sélectionner le répertoire contenant les Mises en plan à traiter, puis les ouvrira unes à unes pour les sauvegarder en pdf.
 

Cordialement.

Ok,

alors en exécutant la macro j'ai un message qui me dit:

Erreur de compilation:

Type défini par l'utilisateur non défini. 

Bonjour;

Vous pourriez me donner encore moins d'informations ? (Bebug = Sur quelle ligne s'arrête le programme ?)

Je soupçonne que vous n'avez pas chargé les Références Nécessaire dans l'interface :
Depuis l'éditeur de Macro, allez dans Option puis cliquez sur Références...
Recherchez dans la liste : (Et cochez les cases)
- Visual Basic For Application
- Solidworks 20xx Exensibility Type Library (20xx=votre version de Solidworks, si plusieurs choisissez la plus récente)
- Ole Automation
- sldWorks 20xx Type Library (20xx=votre version de Solidworks, si plusieurs choisissez la plus récente)
- SOLIDWORKS 20xx Constant type library (20xx=votre version de Solidworks, si plusieurs choisissez la plus récente)
- SOLIDWORKS 20xx Comands type library (20xx=votre version de Solidworks, si plusieurs choisissez la plus récente)
- Microsoft Exel 16.0 Object Library
- Microsoft Shell Microsoft Shell controls and Application.

puis validez votre sélection. (Je vous fait charger volontairement plus de Libraires que nécessaires à cette macro, mais elles vous seront utiles un jour ou l'autre)
Relancez la Macro.

Note : La prochaine fois que vous demandez une Macro, veuillez préciser la version (l'année) de votre Solidworks ainsi que votre niveau en Macro....

Cordialement.
 

1 « J'aime »

Sorry je suis novice niveau Macro donc pas facile d'expliquer clairement où ça beug.

Je vais essayer la manip' et je vous retiens au courant.

Merci

Désolé pour cette réponse tardive mais voici le nom de la ligne où la macro stop:

Function BrowseFolder(Optional Caption As String, Optional InitialFolder As String) As String

et je précise que tout est bien coché.

Bonjour,

Pour les fonctions type Shell, il faut également la référence "Microsoft Shell controls and Application" sinon la compilation du code est en erreur.

Je pense que le problème vient de là (vérifié sur mon poste).

1 « J'aime »

Bonjour;

En effet, cette référence est nécessaire, merci Cyril.f pour cette correction.
Je corrige la liste sur mon post précédent.

Cordialement.