Création
d'entreprise
Posez votre question Signaler

Mettre piece jointe en pdf vba word 2007 [Résolu]

olivia - Dernière réponse le 9 sept. 2010 à 19:09
Bonjour,
Je souhaiterais trouver le code vba pour mettre un document word en pdf en tant que piece jointe dans un email.
J'ai déjà écrit le code suivant qui me permet de la faire à partir d'un bouton de commande, mais la pièce jointe est en format word.
Private Sub CommandButton1_Click()
Set myApp = CreateObject("Outlook.Application")
Set myItem = myApp.CreateItem(olMailItem)
myItem.Subject = "subject"
myItem.Body = "Body text"
myItem.Attachments.Add ThisDocument.Path & "\" & ThisDocument.Name
myItem.to = "olivia.calegari@cecaz.caisse-epargne.fr"
myItem.Display
myItem.Send
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End Sub
Merci d'avance pour votre aide
Olivia
Lire la suite 

Mettre piece jointe en pdf vba word 2007 »

10 réponses
Réponse
+1
moins plus
Bonjour,

Bon, on va recommencer dès le départ car j'ai l'impression que tu ne maîtrises pas du tous les macros et que tu essaies de faire un truc fait de morceaux trouvés ça et là.

La méthode ExportAsFixedFormat , comme je l'ai dit, permet simplement de convertir un doc en pdf. ça ne permet pas d'envoyer le fichier. Le code d'automation que tu as récupéré permet de piloter Outlook depuis Word, et dans ton cas d'envoyer un mail avec une pièce jointe. La pièce jointe n'est plus le document en cours (ActiveDocument) mais le document PDF que tu auras créé et que tu ne pourras pas ouvrir avec Word ('inutile donc d'essayer).

Donc on va créer une macro qui va tout d'abord convertir le document, puis qui va envoyer ce document via l'automation. C'est d'ailleurs ce que fait la fonctionnalité toute faite... car même si tu ne le vois pas, le document est créé temporairement et- stocké dans un dossier temporaire.

Il faudrait aussi penser à demander l'adresse du destinataire, car on peut supposer que ce n'est pas toujours le même. On fera ça par une InputBox. Et puis un message sera bienvenu à la fin pour dire que le mail est parti.

Voici donc la macro :

Private Sub CommandButton1_Click()

Dim fichier
fichier = "C:\...\mondoc.pdf"  'donner le nom exact du fichier pdf et du chemin où il sera stocké

'Export du fichier actif en pdf
ActiveDocument.ExportAsFixedFormat OutputFileName:=fichier, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False

'demande l'adresse du destinataire
destinataire = InputBox("adresse du destinataire")

'démarrage de l'automation Outlook :
Set myApp = CreateObject("Outlook.Application")
Set myItem = myApp.CreateItem(olMailItem)
myItem.Subject = "Objet du mail"
myItem.Body = "Texte du mail"
myItem.Attachments.Add fichier
myItem.to = adresse
myItem.Display
myItem.Send

MsgBox "Le mail es bien envoyé"

End Sub


m@rina
olivia - 9 sept. 2010 à 18:57
merci à toi marina d'avoir pris du temps pour me répondre. Ca fonctionne.

Olivia
m@rina- 9 sept. 2010 à 19:09
J'ai mis :
myItem.to = adresse

évidemment c'est une erreur... Il falait lire :
myItem.to = destinataire

m@rina
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

C'est une fonctionnalité qui existe par défaut... Une macro est elle nécessaire ?

Bouton Office, Envoyer => Envoyer comme pièce jointe au format PDF.

m@rina
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour marina

Merci pour ta réponse.
Je sais que c'est une fonctionnalité qui existe par défaut mais il faudrait que je puisse l'avoir en vba pour la raison suivante :
J'ai un doc word par exemple : une lettre sur laquelle je vais insérer 2 boutons qui vont permettre à l'utilisateur d'envoyer ce document par email à 2 groupes de personnes distincts.
J'ai rendu ces boutons invisibles lors de l'impression (avec l'option masqué) mais je souhaiterais aussi les rendrent invisibles dans ma piece jointe (quand l'utilisateur choisi l'envoi par mail) et la seule solution c'est de convertir mon doc word en pdf.
Merci pour ton aide
Ajouter un commentaire
Réponse
+0
moins plus
je viens de trouver la fonction qui je pense doit être utilisé dans ce cas:
ExportAsFixedFormat mais je ne sais pas comment l'utiliser et ou l'insérer dans mes lignes de code et quel exact je dois donner :

ActiveDocument.ExportAsFixedFormat (et après?)

merci pour votre aide

olivia
Ajouter un commentaire
Réponse
+0
moins plus
Rebonjour,

La méthode ExportAsFixedFormat permet simplement d'exporter (convertir) un document sous un autre format (MDF ou XPS en l'occurence) :

ActiveDocument.ExportAsFixedFormat OutputFileName:="C:\mon_chemin...\mondoc.pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False


Ce code exporte le document actif en un fichier pdf du nom de mondoc.pdf, sur le lecteur C.

C'est tout ce que ça fait. Puisque ta macro est prête pour envoyer le fichier, il te suffira de remplacer le fichier par celui que tu auras converti en PDF.

m@rina

ps. : Merci de ne pas t'éparpiller sur plusieurs topics et de rester dans la même conversation, c'est quand même plus facile à suivre.
Ajouter un commentaire
Réponse
+0
moins plus
bonjour marina,

ca a l'air tellement simple mais malheureusement je suis débutante sur vba et j'ai du mal à tout saisir.
j'ai copié collé ton code et cela ne fonctionne pas.
je pense que j'ai du zapper quelque chose
ou l'insérerait tu dans ma ligne de code et peux tu me dire si il faut que je change certains champs.


Private Sub CommandButton1_Click()

Set myApp = CreateObject("Outlook.Application")
Set myItem = myApp.CreateItem(olMailItem)
myItem.Subject = "subject"
myItem.Body = "Body text"
myItem.Attachments.Add ThisDocument.Path & "\" & ThisDocument.Name
myItem.to = "test@test.fr"
myItem.Display
myItem.Send

ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

End Sub


Merci pour ton aide précieuse et désolé pour l'autre post.
Ajouter un commentaire
Réponse
+0
moins plus
J'ai changé la ligne de code de marina en écrivant ceci :
ActiveDocument.ExportAsFixedFormat OutputFileName:="\" & ThisDocument.Name, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
mais cela ne fonctionne pas quand je l'insère dans mon private sub commandButton1.
Quelqu'un pourrait'il me dire ce que j'ai zappé.

Merci pour votre aide
olivia - 9 sept. 2010 à 08:52
Je viens d'essayer la manip suivante en reprenant le code de marina afin qu'il m'ouvre le doc

ActiveDocument.ExportAsFixedFormat OutputFileName:="\" & ThisDocument.Name, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True


Une fenêtre s'ouvre et me donne le message d'erreur suivant :
La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style . Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


--------------------------------------------------------------------------------

Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource file:///Q:/envoie mail.x...

Y'a t'il une erreur dans la ligne de code?

Merci pour votre aide
Ajouter un commentaire
Ce document intitulé « mettre piece jointe en pdf vba word 2007 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?