En este artículo se describe una macro de Visual
Basic para Aplicaciones que utiliza datos de un documento de
Microsoft Word y un libro de Microsoft Excel para enviar mensajes
desde Microsoft Outlook.
Microsoft proporciona ejemplos de la programación
sólo para ilustración sin garantía que se expresa o implícito. Esto
incluye, entre otras, las garantías implícitas de comerciabilidad e
idoneidad para un fin determinado Este artículo presupone que está
familiarizado por usted con el lenguaje de programación que se
muestra y las herramientas que se utilizan para crear y depurar
procedimientos. Los ingenieros de soporte técnico de Microsoft
pueden ayudar a explicar la funcionalidad de un procedimiento
determinado pero no se modificará estos ejemplos para que
proporcionen que agregó funcionalidad o construyan procedimientos
para cumplir sus necesidades específicas.
El ejemplo que aparece
a continuación supone que dos nombres definidos están en la hoja de
cálculo:
• |
El primer nombre definido "subjectcell" hace
referencia a una celda que contiene la línea de asunto de
mensajes "por ejemplo mensaje Esto es una prueba". |
• |
El segundo definió nombre "tolist" hace
referencia a la primera celda de la lista horizontal que
contiene una lista de destinatarios ("Juan Pérez", "Jane Doe"
y etc. por ejemplo). |
También debe tener un
documento de Microsoft Word. El texto de este documento se utiliza
para su cuerpo de correo de mensaje la macro.
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