VBA-macro waarin gegevens uit een Word-document en een Excel-werkmap worden gebruikt voor het verzenden van berichten uit Outlook


Samenvatting


In dit artikel wordt een macro voor Visual Basic for Applications beschreven waarin gegevens uit een Microsoft Word-document en een Microsoft Excel-werkmap worden gebruikt voor het verzenden van berichten uit Microsoft Outlook.

Meer informatie


Microsoft biedt programmeervoorbeelden voor slechts één afbeelding, zonder garanties die geheel of impliciet zijn aangegeven. Dit geldt ook voor maar niet beperkt tot de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt aangetoond en met de hulpmiddelen voor het maken en gebruiken van debug-procedures. Microsoft ondersteuningstechnici kunnen u helpen de functionaliteit van een bepaalde procedure te uitleggen, maar deze voorbeelden worden niet gewijzigd om extra functionaliteit te bieden of een constructie procedure te bieden aan uw specifieke vereisten. In het volgende voorbeeld wordt uitgegaan van de volgende twee gedefinieerde namen in het werkblad:
  • De eerst gedefinieerde naam, "subjectcell", verwijst naar een cel die de onderwerpregel van het bericht bevat (bijvoorbeeld "Dit is een testbericht.").
  • De tweede gedefinieerde naam, "tolist", verwijst naar de eerste cel in de horizontale lijst die een lijst met geadresseerden bevat (bijvoorbeeld "Dick Jansen", "Jeanette Jansen", enzovoort).
U moet ook een Microsoft Word-document hebben. De tekst van dit document wordt door de macro gebruikt als hoofdtekst van uw e-mailbericht.
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