Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Resumo
Este artigo descreve uma macro do Visual Basic for Applications que usa dados de um documento do Microsoft Word e de uma pasta de trabalho do Microsoft Excel para enviar mensagens do Microsoft Outlook.
Mais informações
Importante
A Microsoft oferece exemplos de programação somente para ilustração, sem garantias expressas ou implícitas. Isso inclui, mas não está limitado a, as garantias implícitas de qualidade comercial ou conformidade para uma determinada finalidade. Este artigo supõe que você conhece a linguagem de programação que está sendo demonstrada e as ferramentas usadas nos processos de criação e depuração. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidade adicional nem criarão procedimentos específicos para atender às suas necessidades específicas.
O exemplo a seguir pressupõe que há dois nomes definidos na planilha:
- O primeiro nome definido, subjectcell, refere-se a uma célula que contém a linha de assunto da mensagem (por exemplo, "Esta é uma mensagem de teste").
- O segundo nome definido, lista de, refere-se à primeira célula na lista horizontal que contém uma lista de destinatários (por exemplo, "John Doe", "Jane Doe" e assim por diante).
Você também deve ter um documento do Microsoft Word. O texto deste documento é usado pela macro como o corpo da mensagem de email.
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 = Nothing
End Sub