Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Enviar archivo adjunto en Email con VBA

| 62 comentarios

Mediante esta función VBA podemos realizar varias funciones como  enviar como archivo adjunto

Podemos realizar nuestro envió a nuestro correo deseado, con solo presionar

una tecla.

ejemplo:

correo2

(Para mayor visualización de la imagen, hacer click en la misma)

se crea una conexión con el gestor deseado y se especifica los correos a utilizar pueden ser mediante el Outlook, yahoo, Gmail, Hotmail según como se desee.

se define el destinatario, la copia y la copia oculta, especificando los campos usados.

según ejemplo:

correo1

(Para mayor visualización de la imagen, hacer click en la misma)

se coloca un botón para hacer mas rápido del envió del correo.

una forma rápida de enviar nuestros correos sin dificultad

Correos

62 comentarios

  1. Disculpa como le haría para adjuntar todos los archivos de la carpeta de attachments
    intenté con *.xlsx al definir la ruta pero no pasa nada

    • Debe ser el nombre exacto y completo por ejemplo:
      C:\Users\moises.vasquez\Desktop\GENERACION PDF\AGROINDUSTRIAS LACTEAS LOS QUESOS DE ORIENTE_Lourdes_Jueves_19-03-2015.pdf

  2. Hola, muy buen aporte, pero tengo una duda, que pasaría si por error escribo mal la ruta o el nombre del archivo y no encuentra el archivo, como puedo hacer para controlar el evento y que no envie el correo si llega a pasar eso

    • Le recomiendo este macro para no fallar en las rutas:

      Sub GetFileNames()

      Dim xRow As Long
      Dim xDirect$, xFname$, InitialFoldr$

      InitialFoldr$ = "C:\" '<<< Startup folder to begin searching from

      With Application.FileDialog(msoFileDialogFolderPicker)
      .InitialFileName = Application.DefaultFilePath & "\"
      .Title = "Favor seleccione el folde donde están los archivos del autoclave"
      .InitialFileName = InitialFoldr$
      .Show
      If .SelectedItems.Count 0 Then
      xDirect$ = .SelectedItems(1) & "\"
      xFname$ = Dir(xDirect$, 7)
      Do While xFname$ ""
      ActiveCell.Offset(xRow) = xDirect$ & xFname$
      ActiveCell.Offset(xRow, 1) = xFname$
      ActiveCell.Offset(xRow, 2) = FileLen(xDirect$ & xFname$)
      xRow = xRow + 1
      xFname$ = Dir
      Loop
      End If
      End With
      End Sub

  3. Excelente.... Funciona a la perfección! Maravillosos aporte. Tengo una inquietud: es posible adjuntar 2 o más archivos bajo la misma Macro?

    • puedes hacer un for i deacuerdo a los rutas de archivo digitadas en filas

    • Puedes anexar tantos archivos como quieras, agregando una línea de attachments para cada uno:

      .Attachments.Add Range("B6").Value
      .Attachments.Add Range("B7").Value
      .Attachments.Add Range("B8").Value
      ...

      • Buena noche,

        Perfecto MRivera.

        Gracias.

        Saludos...

    • Vos lograste que envie mas de un correo seguido, tengo la macro con 3 lineas cada linea es un destinatario, pero cada vez que la corro, solo envia la primera linea la 2 y las 3 no, como hago?

  4. Cordial saludo,
    Ya tengo la estructura y envía perfectamente el correo, mi pregunta es como insertar la firma sin necesidad del ".Display" ya que sería para enviar una cantidad de correos superior a 10 y ese cambio de pantalla es poco eficiente.
    Mil gracias por sus aportes.

  5. Buenas noches;me parece que es una manera muy práctica de realizar un envío de un archivo, pero una consulta si quiero que el servidos sea Hotmail tendría que ser asi:
    Set OutApp = CreateObject("Hotmail.Application")

    Lo intente pero no me salio...

    agradezco su ayuda,

  6. Excelente!!! Muchas gracias

  7. que tal como esta saludos solo quisiera saber como le envío un video sobre un libro que preparé en excel y como realiza ud. esos videos

  8. Estimado jesus ac

    Gracias por su mensaje, cuando desee compartir archivos de gran tamaño puede hacer uso de servicios como Dropbox, y solo distribuye la ruta a quienes desee compartir el archivo.

    Si lo que desea es compartir el video de forma pública puede hacer uso de youtube para ello, un consejo al respecto, revíselo con algún amigo cercano que conozca poco sobre el tema, si él llega a comprender el tema y le agrada entonces sabrá que ya es momento de subirlo a youtube.

    Hay varias herramientas para la creación de videos, no somos especialistas en ello, pero le podemos recomendar que si ya conoce una la aproveche al máximo antes de probar otra, y al probar la siguiente, hágalo sin ningún apasionamiento sobre la primera.

  9. Fernando: muy útil su macro.
    Una pregunta: ¿cómo adjuntar 2 o más archivos?
    Gracias y saludos.

  10. Esto es el ejemplo para mandar por Outlook que todos los pc's traen instalado por defecto (programa), pero como se envía por Internet mediante un servidor de correos (como Gmail)??? Gracias de antemano

  11. Es posible usar una plantilla de correo para el envío, ademas es posible implementar esta macro para enviar varios archivos pero que cumpla las mismas características de esta primera macro?
    Gracias por tu ayuda.

  12. Buenas.

    No encuentro información para lo que yo necesito.

    Tengo un libro excel (2013) con 93 hojas, cada una diferente y personal para cada persona y quiero enviar por correo electrónico cada hoja a su destinatario.
    ¿Cómo?
    Muchas gracias de antemano.
    Un saludo

    • Primero necesitas separar las hojas en archivos.

  13. nesecito enviar el documento adjunto pero con lotus notes

  14. como se puede hacer para el comando de cuerpo tenga mas de un rango?

    donde dice
    .Body = Range("B8").Value

    Como puedo para hacer que tenga mas de un Range??
    e intentado de varias formas pero lo que el correo hace es borrarme la informacion del primer rango.
    Me ayudan...

    • Hola Luis!! En mi caso lo he resulto colocando todo el texto en la misma celda y generando nuevos renglones presionando alto+entre .espero te sirva.saludos☺

  15. Hola Moises. Lo felicito por su brevedad y exactitud, corto y conciso. Me gustaria aclarar una inuietud. Ya teniendo el ATTACHMENTS que Ud describe, como puedo cambiar para el archivo adjunto a este email para enviar sea la hoja actual y que lo envie como PDF con un nombre que le de por medio de una Cell. Gracias.

  16. Hola buenas noches,

    Tengo una plantilla de Word y me gustaría saber si es posible mediante una macros enviar ese archivo word a traves de MICROSOFT OFFICE OUTLOOK a un correo.

    Muchas gracias
    me urge bastante

  17. Buen dia, disculpen alguien me podra apoyar con alguna macro o alguna plantilla de este tipo... resulta que desempeño en el area de cuentas por pagar y necesito enviar de un listado que tengo en excel de "n" proveedores y "n" cantidad de facturas y que las facturas que le pague a la empresa "XY" se le envie la informacion sobre las facturas que le estoy pagando...

    Alguien tendra algun aporte?, gracias de antemano!

    Saludos!

  18. Alguien que me ayude con ejemplo para adjuntar más de un archivo, gracias.

  19. Como se hace para que el el cuerpo del correo se mande un rango de celdas

    • Yo lo resolví con esto:
      .Body = Range("i1").Value & Range("i2").Value & ....

    • DoEvents
      Application.SendKeys “^v”
      DoEvents

  20. Quiero mandar un correo de aviso, cuando una celda, rebase un numero determinado:
    Ejemplo:
    Si la celda A1 su valor es mayor de 40, enviar un correo que diga
    "ALERTA SE REBASARON LAS 40 HORAS"

Página de comentarios 1 de 3
1 2 3

Deja una respuesta

Los campos requeridos estan marcados con *.