Macro enviar hoja de excel por Outlook

Tengo un archivo de Excel con varias hojas (1,2,3,4) y necesito enviar cada hoja a un destinatario de Outlook distinto. Creo que puedo copiar cada hoja a un libro nuevo y luego mandarla como pdf al correo. Solicito ayuda para generar esta macro

1 respuesta

Respuesta
1

H  o l a:

¿Y entonces qué necesitas? La macro para generar un pdf por hoja.

¿O tú vas a crear los archivos?

Para terminar la macro tienes que indicar de dónde se va a tomar el correo del destinatario para cada hoja.

Qué se va a poner en el asunto del correo.

Qué va a ponerse en el cuerpo del correo.

Y cómo se va a llamar cada uno de los archivos.

Cada hoja del libro "Reporte" tiene el nombre de una persona (digamos: Ana, Mario y Claudia). Lo que necesito es que la macro al enviar cada hoja a su destinatario correspondiente transforme la hoja de excel a un pdf y envíe a un correo con Asunto: Tendencia

Pero no me dijiste esto:

El correo del destinatario para cada hoja.

Y cómo se va a llamar cada uno de los archivos.

Ok, digamos que la hoja "Ana" quiero enviarla al destinatario "[email protected] y la hoja "Carlos" quiero enviarla a "[email protected] y así sucesivamente con el resto de las hojas.

Si está bien, pero en qué parte del archivo se encuentran esos datos, si tienes 100 hojas, me vas a dar el correo de los 100 para ponerlo en la macro, o tienes una lista en alguna parte de excel.

Y todavía no me respondes esto:

Y cómo se va a llamar cada uno de los archivos.

Si no me das la información completa, no puedo generar la macro.

ok. Solo es un archivo llamado "Macro para correos" y el correo de cada persona se encuentra en celda A1 de cada hoja.

H o l a:

Te anexo la macro

Sub correo()
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    arch = "Macro para correos.pdf"
    For Each h In Sheets
        h.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ruta & arch, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        '
        Set dam = CreateObject("outlook.application").createitem(0)
        dam.To = h.[A1]
        dam.Subject = "Tendencia"
        dam.Body = ""
        dam.Attachments.Add ruta & arch
        'dam.Display
        dam.send
    Next
    MsgBox "Correos enviados", vbInformation, "SALUDOS"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, en cualquiera de tus hojas, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: pinta
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Funciona perfectamente. Sin embargo, el texto del correo:

dam.Body = ""

es extenso. He intentado colocar lo que necesitamos poner pero no le da formato y sale todo junto.

Queremos que quede:

"Estimados,

En el pdf adjunto podrán encontrar la información del mes actual.

Saludos,

Diego"

Pero lo que aparece es:

"Estimados, En el pdf adjunto podrán encontrar la información del mes actual. Saludos, Diego"

H o l a:

Con todo gusto te sigo apoyando con lo que necesites. Crea un nueva pregunta y ahí me explicas lo que quieres en el cuerpo del correo.

Escribe en el desarrollo de la pregunta que va dirigida a Dante Amor.

S a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas