IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Envoi en mail du corps de message Word


Sujet :

VBA Word

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Par défaut Envoi en mail du corps de message Word
    Bonjour,

    Word (2003) est utilisé comme rédacteur d'email (temporaire). l'envoi s'effectue dans word par le menu Fichier/envoyer vers /destinataire.
    Microsoft Outlook est configuré en mode html.

    Par code VBA, à l'ouverture de Word, le message se contitue automatique incluant une image.
    Le bandeau "outlook" ne semble pas accessible via le VBA.

    L'objectif est d'automatiser l'attachement (insertiond d'un fichier en pièce jointe) à l'ouverture de word.

    l'idée serait d'obtenir un code :ActiveDocument.Attachments.Add = "E:\BOXI3\Reporting\_TPE.xls"


    Dans mes recherches, en modifiant un code, j'arrive à transférer le corps de word dans un message Html de Ms Outlook avec ajout d'une pièce jointe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub CopyMailEnvoi()
        Dim myolApp As Outlook.Application
        Dim myinspector As Outlook.Inspector
        Dim myItem As Outlook.MailItem
        Dim myattachments As Outlook.Attachments
        Set myolApp = CreateObject("Outlook.Application")
        Set myinspector = myolApp.ActiveInspector
        Set myItem = myinspector.CurrentItem.Forward
        Set myattachments = myItem.Attachments
     
            myItem.Display
            myItem.Recipients.Add "Marc.Nul@omail.com"
     
            myattachments.Add "E:\BOXI3\Reporting\_TPE.xls", _
            olByValue, 1, "Test"
     
     
     
     
    End Sub
    Cependant, le but est de faire "l'attachment" et l'envoi à partir de Word.

    Avez-vous une idée sur le comment ?

    Cdlt, Jacky

    P.S: j'ai effectué des recherches retournant des exemples identiques au code ci-dessus

  2. #2
    Membre habitué
    Homme Profil pro
    Infographiste
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Infographiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut
    Bonjour,
    Je suis nouveau sur le forum et je ne suis pas sûr d'avoir tout compris la question mais je vais tenter une réponse.
    Si j'ai bien compris tu veux générer un courriel en utilisant ton Word. J'ai déclaré myolApp et myolApp en object et se n'est qu'après que je leur désigne le type d'objet par des set.
    Pour le corps du courriel j'utilise myItem.body
    Pour les pièces jointes je t'ai ajouté une fonction que j'ai déjà codé il y a un certain temp et que j'utilise fréquemment qui paramètre la boîte de dialogue Open de Word. Si tu veux joindre différents fichier tu peux le faire au moyen d'une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Sub CopyMailEnvoi()
        Dim myolApp  As Object
        Dim myItem  As Object
        Dim myattachments As Object
        Set myolApp = CreateObject("Outlook.Application")
        Set myItem = myolApp.CreateItem(0)
        ActiveDocument.Content.Select
        myItem.To = "tonadresse@hotmail.com"
        myItem.body = Selection
        myItem.Attachments.Add Inserer 'Inserer est une fonction ci-bas
        myItem.Display
    End Sub
    '***********
    Public Function Inserer() As String
    Dim Insertion As FileDialog
    Dim n As Integer
    Dim intFiltre As Integer
    intFiltre = 0
            Set Insertion = Application.FileDialog(msoFileDialogOpen)
            Insertion.ButtonName = "Insérer"
            Insertion.Title = "Insérer un fichier"
            For n = 1 To Insertion.Filters.Count
                If Insertion.Filters(n).Extensions = "*.*" Then
                    intFiltre = n
                End If
            Next n
            If intFiltre = 0 Then
                Insertion.Filters.Add "Tous les types de fichiers", "*.*", 1
                intFiltre = 1
            End If
            Insertion.FilterIndex = intFiltre
            Insertion.Show
            On Error GoTo Vide
                Inserer = Insertion.SelectedItems(1)
            Exit Function
    Vide:
            Inserer = ""
    End Function

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Tu as deux choix, le premier est de faire du "Early Binding", on utilise dans ce cas la bibliothèque Outlook dans Word en la déclarant dans les propriétés du projets.

    Outils => Références

    Le second choix est de faire du "Late Binding", dans ce cas, on n'utilise pas la bibliothèque, mais on la déclare dans le code lors de son utilisation.

    http://mhubiche.developpez.com/vba/f...endre/binding/

    Si tu utilises le "Early Binding", c'est plus facile, l'éditeur t'aide à l'écriture avec l'IntelliSense.

    Voilà un exemple de code non testé et écrit à la volée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub TestAvecOutlook()
    Dim oApp As Outlook.Application
    Dim oMail As Outlook.MailItem
    Dim oAtt As Outlook.Attachments
     
     
     
    Set oApp = Outlook.Application
    Set oMail = oApp.CreateItem(olMailItem)
    Set oAtt = oMail.Attachments
     
    With oMail
        .To = "Adresse@serveur.com"
        .BodyFormat = olFormatHTML
        .Body = "Le contenu"
        .Subject = "Le sujet ou  objet du message"
    End With
     
    oAtt.Add "Le chemin du fichier attaché"
    oAtt.Add "Eventuellement un second fichier"
     
    oMail.Send
     
     
    Set oMail = Nothing
    Set oAtt = Nothing
    oApp.Quit
    Set oApp = Nothing
     
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Envoi de mail avec Indy : initialiser "message-id"
    Par bib34690 dans le forum Web & réseau
    Réponses: 6
    Dernier message: 12/11/2019, 18h12
  2. Envoi de mail lors d'un message d'erreur
    Par thiseo dans le forum Windows XP
    Réponses: 4
    Dernier message: 14/02/2012, 23h15
  3. Récupérer adresses mails dans corps de message
    Par aztecq dans le forum VBA Outlook
    Réponses: 5
    Dernier message: 09/04/2009, 10h10
  4. Envoi de mail avec excel (avec message et p.jointe)
    Par Obelix73 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2007, 00h04
  5. Réponses: 13
    Dernier message: 03/07/2006, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo