VBA word - envoi mail du fichier en format pdf depuis n'importe quel ordi
Bonjour,
Je tente de mettre en place une macro pour envoyer par mail mon fichier word en format pdf depuis n'importe quel utilisateur, mais je n'y arrive pas.
pour l'utilisateur "Dupond" qui fait ceci, cela fonctionne :
Private Sub CommandButton1_Click()
'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro
Dim OutApp As Object
Dim OutMail As Object
Dim fichier As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
fichier = "C:\Users\dupond\Desktop\Monfichier_Word_en_Pdf.pdf"
ActiveDocument.ExportAsFixedFormat OutputFileName:=fichier, ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentWithMarkup, IncludeDocProps:=False, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=True
With OutMail
.To = "destinataire@test.com"
.CC = ""
.BCC = ""
.Subject = "Le subjet"
.Body = "Bonjour"
.Attachments.Add fichier
.Display
' .Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End SubMais si je remplace simplement "dupond" par "" & Environ("username") & "", ça ne fonctionne plus...
Pourriez-vous m'aider pour cela fonctionne s'il vous plaît ?
Merci d'avance.
Bonjour Matigsy
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)
Concernant votre demande, 2 choses :
1) Quand je vois "'Il faut activer la référence Microsoft Outlook Library" avec ce code, c'est totalement faux
C'est ce qu'on appel du "Late binding" il est donc inutile et même déconseillé (pour la compatibilité entre poste) d'activer la référence
2) Voici un code qui enregistre le fichier dans le dossier "Mes documents" de l'utilisateur, c'est plus "propre"
' Procédure en Late Binding, inutile d'activer quoique ce soit en référence
Private Sub CommandButton1_Click()
Dim sPath As String, sFic As String
Dim OutApp As Object, OutMail As Object
Dim fichier As String
' Chemin Mes Documents de l'utilisateur
sPath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
' Nom du fichier PDF
sFic = "Monfichier_Word_en_Pdf.pdf"
' Enregistrer le document actuel en PDF
ActiveDocument.ExportAsFixedFormat OutputFileName:=sPath & sFic, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, Item:=wdExportDocumentWithMarkup, IncludeDocProps:=False, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=True
' Créer un instance Outlook
Set OutApp = CreateObject("Outlook.Application")
' Créer un eMail
Set OutMail = OutApp.CreateItem(0)
With OutMail
.Diplay ' Pour afficher la signature
.To = "destinataire@test.com"
.CC = ""
.BCC = ""
.Subject = "Le subjet"
.HTMLbody = "Bonjour" & .HTMLbody
.Attachments.Add sPath & sFic
' .Send
End With
' Une fois le fichier attaché, on peut le supprimer
Kill sPath & sFic
'
Set OutMail = Nothing
Set OutApp = Nothing
End SubMerci pour votre participation
Cordialement
Merci beaucoup pour ces informations et cette solution qui m'a beaucoup aidée!
Bonne journée.