Macro VBA qui utilise des données d’un document Word et d’un classeur Excel pour envoyer des messages à partir d’Outlook


Résumé


Cet article décrit une macro Visual Basic pour applications qui utilise des données d’un document Microsoft Word et un classeur Microsoft Excel pour envoyer des messages à partir de Microsoft Outlook.

Informations supplémentaires


Microsoft fournit des exemples de programmation uniquement à des fins d’illustration, sans garantie, expresse ou implicite. Cela comprend, sans s’y limiter, les garanties implicites en matière de qualité marchande ou d’adéquation à un but particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous aider à expliquer les fonctionnalités d’une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités ajoutées ou des procédures de construction adaptées à vos besoins spécifiques. L’exemple suivant suppose qu’il existe deux noms définis dans la feuille de calcul :
  • Le premier nom défini, « subjectcell », fait référence à une cellule qui contient la ligne d’objet du message (par exemple, « il s’agit d’un message de test »).
  • Le deuxième nom défini, « ToList », fait référence à la première cellule de la liste horizontale qui contient la liste des destinataires (par exemple, « Jean Dupont », « Jane Dupont », et ainsi de suite).
Vous devez également avoir un document Microsoft Word. Le texte de ce document est utilisé par la macro en tant que corps du message de votre message électronique.
Sub SendOutlookMessages() 'Dimension variables. Dim OL As Object, MailSendItem As Object Dim W As Object Dim MsgTxt As String, SendFile As String Dim ToRangeCounter As Variant 'Identifies Word file to send SendFile = Application.GetOpenFilename(Title:="Select MS Word " & _     "file to mail, then click 'Open'", buttontext:="Send", _     MultiSelect:=False) 'Starts Word session Set W = GetObject(SendFile) 'Pulls text from file for message body MsgTxt = W.Range(Start:=W.Paragraphs(1).Range.Start, _    End:=W.Paragraphs(W.Paragraphs.Count).Range.End) 'Ends Word session Set W = Nothing 'Starts Outlook session Set OL = CreateObject("Outlook.Application") Set MailSendItem = OL.CreateItem(olMailItem) ToRangeCounter = 0 'Identifies number of recipients for To list. For Each xCell In ActiveSheet.Range(Range("tolist"), _     Range("tolist").End(xlToRight))     ToRangeCounter = ToRangeCounter + 1 Next xCell If ToRangeCounter = 256 Then ToRangeCounter = 1 'Creates message With MailSendItem     .Subject = ActiveSheet.Range("subjectcell").Text     .Body = MsgTxt     'Creates "To" list     For Each xRecipient In Range("tolist").Resize(1, ToRangeCounter)         RecipientList = RecipientList & ";" & xRecipient     Next xRecipient     .To = RecipientList     .Send End With 'Ends Outlook session Set OL = NothingEnd Sub