Macro enregistrer en PDF que la première page de ma mise en plan

Bonjour à tous,

J'ai créer une macro qui me permet de créer un PDF de mes mise en plan avec un indice en préfixe et un deuxiéme PDF avec un préfixe indice suivi de "ADV",

Mon probléme est le suivant sur le deuxiéme PDF je souhaiterai qu'il est que la premiére page de ma mise plan, car lors de l'enregistrement sous on peut dire les pages souhaitées ou pas mais en VBA je ne sais pas le faire.

Actuellement j'utilise Acrobat que j'ouvre à partir de ma macro pour supprimer les deux derniéres 

Vous trouverez ci-dessous ma macro :

*****************************************************************************

Sub main()

Dim SwApp As Object
    Dim Part As Object
    Dim SelMgr As Object
    Dim selObj As Object
    Dim AcroApp As Acrobat.AcroApp
    Set SwApp = CreateObject("SldWorks.Application")

Set Part = SwApp.ActiveDoc
Dim indice As String
indice = InputBox("indice?")
Dim myModelView As Object
Set myModelView = Part.ActiveView
Dim cible As Scripting.filesystemobject
Dim valeur As Scripting.file
Set cible = CreateObject("scripting.filesystemobject")
Set valeur = cible.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("U:\PDF à diffuser\" & cible.GetBaseName(valeur) & "-" & indice & ".pdf", 0, 0)
If MsgBox("ADV", vbYesNo, "Faut-il un PDF pour l'ADV ?") = vbYes Then
longstatus = Part.SaveAs3("U:\PDF à diffuser\" & cible.GetBaseName(valeur) & "-" & indice & "-ADV" & ".pdf", 0, 0)
Shell ("C:\Program Files (x86)\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe U:\PDF à diffuser\" & cible.GetBaseName(valeur) & "-" & indice & "-ADV" & ".pdf"), vbMaximizedFocus

End If

  MsgBox ("Terminer")

End Sub

*****************************************************************************

Merci d'avance pour vos réponses

Julien.

 

 

Bonjour,

 

Personnellement je ne peux pas vous aider, mais des personnes comme .PL ou Joss.G et il doit y en avoir d'autre, pourront certainement vous aider.

 

Mathieu

1 « J'aime »

Bonjour,

Est-ce que tu peux faire une macro en apprentissage de la fonction enregistrement avec seulement la 1ère page pour voir comment ils le traduisent en VBA ?

 

s.b

J'ai déja essayé de utilisation l'enregistreur de Macro pour qu'il me donne la ligne de code mais cela ne fonctionne pas

Julien.

 

Salut,

Dans ce cas, je ne crois pas que tu puisses utiliser le Shell, il faut utiliser la fonction SolidWorks pour créer les PDF, voir  :

http://help.solidworks.com/2014/English/api/sldworksapi/Save_File_as_PDF_Example_VB.htm

 

Exemple :

Set swExportPDFData = swApp.GetExportFileData(swExportDataFileType_e.swExportPDFData)

'ici choisir sa feuille

varSheetName = strSheetName

boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)

   

boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings)

 

 

Source : https://forum.solidworks.com/thread/66559

1 « J'aime »

C'est gentil de me citer Mathieu ANGER mais je ne connais pas bien les macros, j'avoue que je m'y suis un peu attardé de temps en temps mais de là à aider à rédiger des lignes de codes... ^^

Ca m'est arrivé de trouver des macros toute faites pour ceux qui en cherchent mais je ne suis pas aussi bon que .PL. (Je croit que Jmsavoyat en connais pas mal sur le sujet aussi).

Cdt,

Joss

1 « J'aime »

Merci pour ta solution .PL ^^ ça fonctionne super bien ;) j'ai du l'adapter un peu mais je suis content du résultat,

Merci encore et bonne journée,

 

Julien.

1 « J'aime »

De rien ^^

Si tu peux poster le code pour qu'on ait la syntaxe exacte (notamment pour choisir la première feuille uniquement), ça pourra servir à d'autres !

Bonne journée à toi.

Voici la macro compléte qui permet d'avoir en premier un PDF avec toutes les pages et un préfixe "indice" dans son nom et en deuxiéme avoir que la premiére page avec préfixe "indice" et autre prédéfini "ADV" 

à vous de la modifier comme bon vous semble 

Bonne journée à tous 

Julien.

 

************************************************************************************************************************

Sub main()

Dim SwApp As Object
    Dim Part As Object
    Dim SelMgr As Object
    Dim selObj As Object
    Dim swExportPDFData As SldWorks.ExportPdfData
    Dim boolstatus As Boolean
    Dim lErrors As Long
    Dim lWarnings As Long
    Dim strSheetName(3) As String
    Dim varSheetName As Variant
    Dim filename As String
    Dim swModelDocExt As SldWorks.ModelDocExtension

           
    Set SwApp = CreateObject("SldWorks.Application")

Set Part = SwApp.ActiveDoc
If Part Is Nothing Then
        MsgBox "No current document", vbCritical
        End
End If
Dim indice As String
indice = InputBox("indice?")
Dim myModelView As Object
Set myModelView = Part.ActiveView
Dim cible As Scripting.filesystemobject
Dim valeur As Scripting.file
Set cible = CreateObject("scripting.filesystemobject")
Set valeur = cible.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("C:\chemin destination du PDF" & cible.GetBaseName(valeur) & "-" & indice & ".pdf", 0, 0)
If MsgBox("ADV", vbYesNo, "Faut-il un PDF pour l'ADV ?") = vbYes Then

filename = "C:\chemin destination du PDF" & cible.GetBaseName(valeur) & "-" & indice & "-ADV" & ".pdf"

Set swModelDocExt = Part.Extension
Set swExportPDFData = SwApp.GetExportFileData(1)

strSheetName(0) = "Nomenclature"

varSheetName = strSheetName


boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)
    
boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings)

   
End If
   MsgBox ("Terminer")
End Sub

*************************************************************************************************************************