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

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

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ó

buscarv con varios resultados

Es de las preguntas mas recurrentes que he tenido: ¿se puede lograr que la función BUSCARV() devuelva varios resultados? Si recordamos el uso de esta función, sabremos que la misma buscar en valor en el rango especificado, retornando un solo resultado. Si en la tabla tenermos varios registros iguales BUSCARV() solo nos devolverá el primero de ellos, omitiendo el resto. Entonces ¿se puede? Bueno, aplicando otra técnica sencilla que se me ocurrió al intentar solucionar el planteamiento de un lector... si, puedo hacerlo.... pero sin usar BUSCARV(). la idea es que coloquemos en E1 el código del producto a buscar y a partir de E2 nos devuelva todas las coincidencias de la tabla. [+/-] Ver el resto / Ocultar Vamos a necesitar una columna "auxiliar" para llevar a buen término este proyecto. Con macros el tema sería mas sencillo, pero aquí la cuestión es resolverlo con las funciones de Excel, sin VBA. Paso a paso: Como primer medida chequeamos que valores de la columna A coincide co