J'ai modifié la variable dans le SWmoddoc.SaveAs(CheminNomFichierPDF), j'avais mis le adresse complète avec le fichier, cela ne fonctionné pas j'ai juste mis le nom du fichier pdf et cela me le crée par contre dans le même dossier que le slddrw, et autre chose si le dossier dans lequel je veux enregistré le pdf existe déjà, cela bug, quelqu'un peut il ma'aider à comprendre voici le texte de ma macro.
sans_titre.png
Bonjour,
Je pense que l'erreur vient de la variable "CheminNomFichierPDF" dans cette commande :
nErrors = SWmoddoc.SaveAs(CheminNomFichierPDF)
Quand tu enregistres avec la commande "SaveAs", tu dois mettre en argument le nom complet du fichier, AVEC l'extension (.pdf dans ton cas).
Cordialement.
Franck.
j'ai vu cela aprés lucas, je l'ai modifé, mais cel ane fonctionne toujours pas.
fgirard , j'ai vu aussi cela, je l'ai modifié mais fonctionne toujours pas entièrement.
pl
Juillet 15, 2014, 12:22
13
Pour les points d'arrêts, regarde le lien que j'ai mis plus haut :
http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html
Cela t'explique plusieurs façons debugger du code, dont les points d'arrêts.
1 « J'aime »
pl
Juillet 15, 2014, 12:26
14
Si ça ne fonctionne toujrous pas, ajoute des espions comme indiqué ici :
http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html
Et quelles sont les valeurs des variables :
NomDossierPDF
CheminNomFichierPDF
Où s'arrete ta macro ?
1 « J'aime »
re
Pour aider au test d'une macro > dans l'éditeur d'équation cliquer sur "Affichage" sur "Fenêtre de variables locales" > voir pièce jointe
editeur_de_macro_fenetre_variables_locales.png
2 « J'aime »
Nos posts se croisent, désolé.
C'est bizarre que "SaveAs" ne fonctionne pas correctement avec le nom complet du fichier (chemin+nom+extension).
Pareil pour le bug avec le dossier qui existe déjà.
Essaye avec la commande "SaveAs" pour ModelDocExtension. C'est celle que l'utilise dans mes macros.
Voici comment déclarer :
Dim SWmodext as As SldWorks.ModelDocExtension
Dim swExportPDFData As SldWorks.ExportPdfData
Dim Errors As Long Dim Warnings As Long
et comment affecter :
Set SWmodext = SWmoddoc.Extension
ensuite :
nErrors = SWmodext.SaveAs(CheminNomFichierPDF, 0, 0, swExportPDFData, Errors, Warnings)
Pour la gestion des dossiers, j'utilise l'objet FileSystemObject :
Dim oFSO As Scripting.FileSystemObject Dim oFld As Folder
Set oFSO = New Scripting.FileSystemObject
If oFSO.FolderExists(CheminNomFichierPDF) = False Then Set oFld = oFSO.CreateFolder(CheminNomFichierPDF) End If
2 « J'aime »
Merci caronmaxime , trés utile cette fenètre !
Donc avec ta fenètre mes variable on bien la valeur que je veux leur donner par contre cela ne fonctionne pas comme je le souhaite.
il me crér bien le dossier 2014, par contre si le dossier existe déjç cela s'arrète à la ligne Mkdir, (1er point que je ne comprends pas)
et il me crér bien le fichier pdf, mais par contre dans le même dossier que le fichier active alors qu'il devrait le mettre dans le dossier 2014 ( 2nd point que je ne comprends pas)
HELP !!
1 « J'aime »
pl
Juillet 15, 2014, 12:54
18
L'erreur ne viendrait pas du fait que tu testes un dossier et crées un autre dossier ?
If Dir$(CheminNomFichierPDF) = "" Then MkDir NomDossierPDF
End if
CheminNomFichierPDF ou devrait être utilisé ici 2 fois, non ? Une fois pour le test Dir$ et une fois pour le MkDir ?
3 « J'aime »
re re
Mathieu, à mon avis ton [ MkDir NomDossierPDF] doit être remplacé par [MkDir CheminNomFichierPDF]
Dans ton éditeur de macro, tu peux double cliquer sur le mot clé MkDir pour le sélectionner et appuyer sur F1. De l'aide te permettra de comprendre.
re re re
faire le point en tenant compte des exellentes recommandations de Fgirard et peut être jetter un oeil à la question "ma macro PDF DXF que dire? " que j'ai publié.
Autrement voila comment je proccède ( voir pièce jointe ) pour débugger une macro quand elle crée des dossier ou des fichiers
capture_decran_sw_et_editeur_sw_et_explorer_windows.png
Voilà j'ai fais les modifs mais cela me fait toujours pareil, et quand je la relance voilà ou ça bug !
sans_titre.png
pl
Juillet 15, 2014, 1:47
22
Ah je pense que c'est car tu n'as pas l'antislash à la fin de ton chemin !!!
Pour le vérifier, ajoute ceci :
If right(CheminNomFichierPDF,1) = "\" then
CheminNomFichierPDF = CheminNomFichierPDF & "\"
End if
Il faut le mettre avant ta ligne :
If Dir$(CheminNomFichierPDF) = "" Then
1 « J'aime »
Non lucas, cela reste idem je ne l'ai pas fait comme tu l'as dit , je l'ai fait comme cela.
CheminNomFichierPDF = "C:\ANGER\pdf\" & NomDossierPDF & "\"
mais cela ne change rien.
Par contre comment ça fonctionne cela?
nErrors = SWmoddoc.SaveAs(NomFichierPDF) NomFichierPDF=045/1-2014-A
Que doit on avoir entre les parenthèses?
je trouve pas et je comprends pas trop ce qu'il y a sur internet.
pl
Juillet 15, 2014, 2:00
24
Comme indiqué plus haut, ta variable NomFichierPDF doit contenir l'extension du fichier !
Donc pour toi .pdf
Et peut-être le chemin aussi ?
Essaye les deux.
J'ai pas possibilité de tester actuellement.
1 « J'aime »
J'ai essayé les 2 sachant que la variable "NomFichierPDF" à bien l'extension à l'origine, mais cela reste pareil, il me l'enregistre dans le dossier ou est le fichier active.
pl
Juillet 15, 2014, 2:33
26
Donc tu n'as pas essayé d'inclure le chemin de destination (là où tu veux l'enregistrer) dans NomFichierPDF ?
Car un "save as" sans le chemin l'enregistre dans le dossier où il y a la pièce d'origine !
1 « J'aime »
pl
Juillet 15, 2014, 2:34
27
Ca sera :
nErrors = SWmoddoc.SaveAs(CheminNomFichierPDF & NomFichierPDF)
En veillant bien à ce qu'il y ait un antislash entre les 2 (dans la première variable ou la seconde, peut importe).
1 « J'aime »
pl
Juillet 15, 2014, 2:36
28
Et pour mon message de 15:47, c'était concernant la création du dossier, pas l'enregistrement du PDF :
Lucas P
15 juillet, 2014 - 15:47
Ah je pense que c'est car tu n'as pas l'antislash à la fin de ton chemin !!!
Pour le vérifier, ajoute ceci :
If right(CheminNomFichierPDF,1) = "\" then
CheminNomFichierPDF = CheminNomFichierPDF & "\"
End if
Il faut le mettre avant ta ligne :
If Dir$(CheminNomFichierPDF) = "" Then
1 « J'aime »