Xtian_Québec
XLDnaute Occasionnel
RE le Forum, mon dernier fil n'a probablement pas trouvé preneur car je l'ai inscrit sur le forum hier en fin de PM (Québec) et la plupart des XLnautes étaient probablement au lit (France) à ce moment...
Je relance donc mon post en espérant que j'obtiendrai plus de succès...Voici le roman que j'avais écrit hier.
J'aimerais obtenir de l'aide encore une fois. Prendre note que je ne suis pas trop familier avec les fonctions Set Object et en fouillant ici et là sur d'autres forum (MyCADservices ainsi que sur Avenao) et j'ai trouvé un bout de code qui, selon moi, pourrais régler mon problème mais j'essais de l'adapter et ça ne fonctionne pas.
Voici d'abord ce que je veux faire:
J'ai un fichier Excel qui récupère des dessins en format PDF avec le code suivant:
Sub RécupèreDessinPDF()
Range("A19").Select
ActiveSheet.OLEObjects.Add(Filename:= _
"C:\MonRépertoire\MonDessin.pdf", Link:=False, _
DisplayAsIcon:=False).Select
End Sub
Ce code fonctionne très bien. Par contre, ce code ne fonctionne pas avec des fichiers dessins dont les extensions se terminent par .dwg, .slddrw et .dfx. Les fichiers slddrw sont des dessins développés avec SolidWorks et on peut, à partir de ce programme, ouvrir les dessins et les enregistrer sous PDF. Donc ce que je veux réaliser, c'est ouvrir un dessin avec l'application SolidWorks avec mon code (dans Excel) et enregistrer le dessin en format PDF dans le même répertoire. Voici le code que j'ai trouvé:
Sub main()
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object
Dim swModel As SldWorks.ModelDoc2
Dim sPathName As String
Dim sExtension As String
Set swApp = Application.SldWorks
sPathName = swModel.GetPathName
Set swModel = swApp.ActiveDoc 'associe Swmodel au document en cours
Set Part = swApp.ActiveDoc 'associe part au document en cours
sPathName = swModel.GetPathName 'recupere le nom complet du document actif
sPathName = Left(sPathName, Len(sPathName) - 6) 'suppr des 6 derniers caractères
sPathName = sPathName + "SLDDRW - Feuille1.dwg" ' ajoute SLDDRW - Feuille1.dwg (pour respecter la casse imposer par impression multidocuments
sExtension = Right(swModel.GetPathName, 6)
Part.Save2 False
Part.ViewZoomtofit2 'zoom tout
Part.SaveAs2 sPathName, 0, True, False 'sauvegarde en dwg dans le meme dossier que le fichier en cours
End Sub
Ce code est probablement assez explixcite pour un connaisseur mais comme je n'en suis pas un, je m'y perds un peu. Ce code enregistre un slddrw en dwg mais je crois que la logique, lorsque je comprendrai, sera la même pour enregistrer les fichier en format pdf.
Prendre note que j'utilise un poste de travail qui a SolidWorks donc je peux sélectionner les Library Type dans les préférences Visual basic, car elles sont nécessaires à l'exécution du code.
J'ai tenté d'adapter ce code à mes besoins mais ça ne fonctionne pas. Je suis vraiment novice lorsqu'il s'agit d'exécuter des codes qui touchent une autre application...Votre aide SVP
Ce qu'il me faudrait, c'est comprendre, étape par étape ce qui se passe dans ce code.
Merci de votre habituelle assistance
Xtian_Québec
@+++
Je relance donc mon post en espérant que j'obtiendrai plus de succès...Voici le roman que j'avais écrit hier.
J'aimerais obtenir de l'aide encore une fois. Prendre note que je ne suis pas trop familier avec les fonctions Set Object et en fouillant ici et là sur d'autres forum (MyCADservices ainsi que sur Avenao) et j'ai trouvé un bout de code qui, selon moi, pourrais régler mon problème mais j'essais de l'adapter et ça ne fonctionne pas.
Voici d'abord ce que je veux faire:
J'ai un fichier Excel qui récupère des dessins en format PDF avec le code suivant:
Sub RécupèreDessinPDF()
Range("A19").Select
ActiveSheet.OLEObjects.Add(Filename:= _
"C:\MonRépertoire\MonDessin.pdf", Link:=False, _
DisplayAsIcon:=False).Select
End Sub
Ce code fonctionne très bien. Par contre, ce code ne fonctionne pas avec des fichiers dessins dont les extensions se terminent par .dwg, .slddrw et .dfx. Les fichiers slddrw sont des dessins développés avec SolidWorks et on peut, à partir de ce programme, ouvrir les dessins et les enregistrer sous PDF. Donc ce que je veux réaliser, c'est ouvrir un dessin avec l'application SolidWorks avec mon code (dans Excel) et enregistrer le dessin en format PDF dans le même répertoire. Voici le code que j'ai trouvé:
Sub main()
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object
Dim swModel As SldWorks.ModelDoc2
Dim sPathName As String
Dim sExtension As String
Set swApp = Application.SldWorks
sPathName = swModel.GetPathName
Set swModel = swApp.ActiveDoc 'associe Swmodel au document en cours
Set Part = swApp.ActiveDoc 'associe part au document en cours
sPathName = swModel.GetPathName 'recupere le nom complet du document actif
sPathName = Left(sPathName, Len(sPathName) - 6) 'suppr des 6 derniers caractères
sPathName = sPathName + "SLDDRW - Feuille1.dwg" ' ajoute SLDDRW - Feuille1.dwg (pour respecter la casse imposer par impression multidocuments
sExtension = Right(swModel.GetPathName, 6)
Part.Save2 False
Part.ViewZoomtofit2 'zoom tout
Part.SaveAs2 sPathName, 0, True, False 'sauvegarde en dwg dans le meme dossier que le fichier en cours
End Sub
Ce code est probablement assez explixcite pour un connaisseur mais comme je n'en suis pas un, je m'y perds un peu. Ce code enregistre un slddrw en dwg mais je crois que la logique, lorsque je comprendrai, sera la même pour enregistrer les fichier en format pdf.
Prendre note que j'utilise un poste de travail qui a SolidWorks donc je peux sélectionner les Library Type dans les préférences Visual basic, car elles sont nécessaires à l'exécution du code.
J'ai tenté d'adapter ce code à mes besoins mais ça ne fonctionne pas. Je suis vraiment novice lorsqu'il s'agit d'exécuter des codes qui touchent une autre application...Votre aide SVP
Ce qu'il me faudrait, c'est comprendre, étape par étape ce qui se passe dans ce code.
Merci de votre habituelle assistance
Xtian_Québec
@+++