Ir al contenido principal

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

Comentarios

  1. 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?

    ResponderEliminar
  2. 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.

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

    ResponderEliminar
  4. 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.

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

    ResponderEliminar
  6. 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.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

macros: como enviar mails desde Excel (vba)

Un gran amigo "on-line", Johan Moreno, de Colombia , me hizo llegar la inquietud de cómo enviar mails desde Excel . Si bien contaba con algunas líneas de código sobre el particular, decidí retomar mi ejemplo y adaptarlo mejor a las circunstancias. Hace unos minutos termino de remitirle un correo con la solución a Johan... desde Excel y con un archivo adjunto, mismo que transcribo a continuación para ayudar a todos con esta tarea. Veamos primero las dos formas principales de enviar mails: mediante Outlook o nuestro Web Mail ( yahoo, gmail, hotmail, etc, etc ) No soy usuario de Outlook en lo absoluto: no confío en los agujeros de seguridad que continuamente aparecen y, por otro lado, t eniendo a mi alcance una herramienta tan poderosa (y gratuita) como Gmail, la cual ahora también permite sincronizar los mensaje con la Pc para verlos offline (deben activarlo en "google labs") ... no creo que me haga usuario ni hoy ni mañana. Igualmente mas adelante daré una solució

funciones: convertir numeros a letras con excel

En realidad hace tiempo que vienen consultándome sobre esto... quizás cinco o seis años . Debe ser una de las funciones mas buscadas de Excel, por lejos: la posibilidad de escribir: 1.534,63 y que en una celda aparezca magicamente "un mil quinientos treinta y cuatro c/15/100". Aquí les dejo una solución, basada en funciones , sin utilizar macros, la cual preparé exclusivamente para este Blog. A pesar de los millones de usuarios que requieren esta herramienta, no viene incorporada en Excel, debemos armarla nosotros mismos .  Luego de la imagen irá la explicación de como llegué a lograr esto, dado que es un proceso medianamente complejo , que utiliza tres o cuatro funciones básicas y requiere de varios pasos. así quedará nuestra planilla y siempre devolverá en letras el valor que ingresemos en A1 [+/-] Ver el resto / Ocultar Desde ya aclaro: esta no es " la forma " de hacerlo, simplemente es una mas, evitando el uso de macros. Sobre esta base, comencemos: 1) El núme

sopa de letras en excel

Un lector me comenta que pudo visualizar varias sopas de letras en YouTube, realizadas con Excel. Inmediatamente me dirigí a dicho sitio y busqué información al respecto. Los ejemplos son buenos y si, efectivamente, podemos armar una muy buena "sopa de letras", salvo que (digamos) es un trabajo bastante manual, cosa que intento evitar a toda costa en mis proyectos. Obviamente que la tarea de automatización incluye Macros, lo cual me insume tiempo, pero queda mucho mejor. Vamos primero a explicar muy brevemente la forma de realizar esta juego "a la clásica", para luego pasar a un desarrollo mucho mas complejo, pero también automatizado y realista. la clásica grilla de una sopa de letras [+/-] Ver el resto / Ocultar Bien, analicemos un poco la imagen superior: 1) es una grilla de 20 filas x 20 columnas, aunque bien podríamos hacerla del tamaño que quisiéramos. 2) Cada celda tiene una letra, que fue generada  mediante la anidación de dos funciones. 3) Vean ahora la ba