Regresar a la Pagina de Inicio

16 jun. 2012

macros: como enviar mails desde Excel (vba)-segunda parte

El interés de mis lectores y la escasa información que en general se encuentra sobre el tema, han hecho del envío de mails desde Excel (utilizando macros) una de las entradas mas exitosas. Recibo constantes consultas al respecto (algunas no respondidas, disculpen) y ostenta un impresionante número de visitas y comentarios, que día a día se incrementan.
A muchos de Uds. les estoy debiendo el post que en estos momentos escribo: una esperada, y mejorada, segunda parte.
¿Que me lleva a retomar el tema? Sencillo: en la primera vimos como enviar 1 (un) mail... es decir... (y valga la redundancia) uno solo. Fue mas que suficiente para muchos proyectos, pero mis ingeniosos lectores necesitan mas y con sus preguntas dieron el siguiente paso: ¿como hago para remitir correos en base a una lista de direcciones de mails? En otras palabras: que Excel no dispare uno solo, si no que vaya leyendo de una tabla las direcciones y a cada una de ellas les envíe un mail. Algo así como un "mailing", desde Excel, lo que aliviaría mucho las tareas, automatizándolas por completo.
Eso veremos a continuación, aprovechando para tocar otros aspectos del procedimiento y armar un buen proyecto, en el cual intentaré integrar varias dudas planteadas.

[+/-] Ver el resto / Ocultar

6 comentarios:

Anónimo dijo...

excelente aporte pero tengo una pequeña duda tengo 30 correos en una lista que van desde la celda b8 a la celda b38 como hago para poner todos esos correos en una variable para poderlos enviar?

Damian Omar Silva dijo...

yo haría algo así:
Dim Correos as string

For X = 8 to 38
Correos=Correos & Cells(X,"B") & ";"
next X
Correos = Left(Correos, (Len(Correos) - 1))
MsgBox Correos

te explico: en la variable Correos voy almacenando todas las direcciones de mail, mediante un bucle, separando a cada una de ellas con punto y coma (;).
Cuando salgo del bucle utilizo la función Left para quitar el último punto y coma de la cadena.
Por ultimo muestro en un msgbox el resultado.
Probá este procedimiento tal cual te lo paso.
Luego incorporalo al sub que envía mails (quita el msgbox) y en la propiedad .To colocas la variable Correos.

Anónimo dijo...

Graciass me funciono perfectamente ahora tengo otra duda yo puedo adjuntar en un correo enviado desde la macro una hoja de mi libro?

Damian Omar Silva dijo...

con la instrucción
ActiveSheet.Copy
se genera un libro nuevo, conteniendo esa hoja.
Luego guardas el nuevo libro:
ActiveWorkbook.Save "C:\Mis Documentos\Libro_X_Mail.xls"
y usas esa ruta como parámetro para enviar el archivo adjunto.
Ese es un ejemplo, desde ya que puedes modificarlo, poniendo el nombre y directorio reales.
Suerte y cualquier cosa me avisas.

Luis Mejía dijo...

Hola Damian, eres un crack en esto... Cómo puedo hacer para que los correos se envien todos los 1 del mes?

Damian Omar Silva dijo...

Gracias Luis por tus palabras.
Yo utilizaría la función Day() para evaluar si el día del sistema es el primero. Te lo ejemplifico:
If Day(Date) = 1 then
'aqui va el código que dispara lo correos electrónicos
end if

¿Se entiende? Si el día de hoy es igual a 1... se ejecuta la macro.
Cualquier duda, a tu disposición.

Publicar un comentario

Regresar a la Pagina de Inicio

ENTRADAS MAS RECIENTES (ULTIMAS 10)


las + vistas

10 ULTIMOS COMENTARIOS DE MIS LECTORES

Free counters!
blog de periodismo




GRAFICA RIO BRAVO
Serigrafia-Offset
Rosario - Santa Fe - Argentina
TE: 0341 4664028