Macro para envío de mail por excel

Antes que todo felicitarte por la buena disposición que tienes y las respuestas claras que das.

Sabes que necesito crear una macro en excel que al momento de ejecutarla me envíe dos mail, uno al un usuario con solo el asunto o subject (esto es para un seguimiento ) y el otro a otro usuario con el asunto y ademas el archivo adjunto.

Mira yo tengo el siguiente código.

Sub Enviar_Mail()
Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNameSpace("MAPI")
Set objMailItem = objOutlook.CreateItem(0)
Set objRecipient = objMailItem.Recipients.Add("[email protected]")
objRecipient.Type = 1
objMailItem.Subject = "archivo prueba "
objMailItem.Body = "xxxxx"
objMailItem.send

'primera parte enviaría mensajes de texto

ActiveWorkbook.SendMail ("[email protected]"), "Solic." & " " & "enviada"

MsgBox "Su solicitud ha sido enviada.", Title:="Envío"

End Sub

Este código funciona sin problemas, pero solo cuando predetermino la dirección de correo (objMailItem.Recipients.Add([email protected])) lamentablemente lo que yo necesito que el mail del destinatario esté asignado a un celda ej: Range ("A28") y cuando yo reemplazo la dirección de correo por la celda mencionada me genera un error. Entonces la pregunta es: ¿Puedo usar este mismo código agregando lo que necesito? ¿Cómo sería esto? ¿O tengo que usar otra macro diferente y esta cual seria?

Esperando ser claro en mi pregunta y tener buena acogida.

1 respuesta

Respuesta
3

Te mando un ejemplo, sigue mis pasos:

En la celda F1 de la hoja activa anotamos el asunto del mail

En la celda F2 de la misma hoja anotamos la dirección de correo del destinatario.

Ejecutando esta macro te mandará por correo al destinatario el archivo que tienes abierto como adjunto. Para ello previamente tiene que estar grabado en tu disco duro.

Puedes cambiar la palabra display por send para que lo envíe directamente si necesidad de visualizarlo previamente.

Sub ejemplo()
'por luismondelo
asunto = Range("f1").Value
para = Range("f2").Value
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.createitem(olmailitem)
parte2.to = para
parte2.Subject = asunto
parte2.attachments.Add ActiveWorkbook.FullName
parte2.display
Set parte1 = Nothing
Set parte2 = Nothing
End Sub

no olvides finalizar la consulta

Pero con este código solo envía un Mail con el adjunto, cosas que en la macro q enviar también lo ejecuta, mi idea es que envíe dos, uno con solo el asunto a un destinatario, y el archivo a otro.

Saludos

Claro, lo mio era un ejemplo para que lo desarrollaras tú, pero lo haré yo:

Ahora tienes en el rango F3 el mail del destinatario sin fichero adjunto

Sub ejemplo()
'por luismondelo
asunto = Range("f1").Value
para = Range("f2").Value
para2 = range("f3").value
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.createitem(olmailitem)
parte2.to = para
parte2.Subject = asunto
parte2.attachments.Add ActiveWorkbook.FullName
parte2.send
Set parte1 = Nothing
Set parte2 = Nothing
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.createitem(olmailitem)
parte2.to = para2
parte2.Subject = asunto
parte2.send
Set parte1 = Nothing
Set parte2 = Nothing
End Sub

no olvides finalizar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas