Macro para enviar hoja de Excel a Outlook

Tengo una Excel con varias hojas ( en la cuales tengo las horas trabajadas durante xmes), necesito una macro en la cual yo pueda elegir en una hoja aparte mediante una lista desplegable el contenido y hoja que quiero enviar por correo (Outlook) a un destinatario.

¿Es posible dicha idea?

Desde ya muchas gracias

La macro que use para enviar desde Excel a Outlook es ésta:

Sub SendMailbyOutlook()

On Error Resume Next

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Dim OA, OM As Object

Dim TD As String

TD = Format(Date, "ddmmyyyy")

Set OA = CreateObject("Outlook.Application")

OA.Session.Logon

Set OM = OA.CreateItem(0)

dest = Cells(3, "E")

With OM

    .To = "[email protected]"

    .Subject = "Horas"

.Body = "Eduardo, Te adjunto una planilla con las horas trabajadas durante el mes"

    .Attachments.Add ("D:\Escritorio\Horas.xlsm")

    .Send

End With

If Err.Number = 0 Then

    SendMail_Gmail = True

    MsgBox "El mail fue enviado con éxito", vbInformation, "Aviso"

Else

    MsgBox "Se produjo el siguiente erro:" & Err.Description, vbCritical, "Error nro" & Err.Number

End If

Set OM = Nothing

Set OA = Nothing

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub

1 Respuesta

Respuesta
1

[Hola

Para adjuntar una, o más hojas, y enviarlas por coreo hay que convertirlas primero en archivo:

https://abrahamexcel.blogspot.com/2018/08/enviar-hojas-y-el-libro-activo-por.html 

Asumo que, ya que has hecho esa macro, lo de colocar el nombre de todas las hojas en una lista desplegable se te hará más fácil así que solo debes de reemplazar el valor de la lista en la hoja que se copia según lo indicado por el enlace. Ve probando y comentas.

Abraham Valencia

Creo que no te entendí, disculpas,  yo en el mismo libro 14 hojas (12 que hacen referencias a los meses), en la hoja 13 arme una lista desplegable con los nombre de los meses y un botón al costado, yo lo que quiero es que a partir de una macro, yo seleccione un nombre de esa lista (ej: Marzo) y al apretar el botón (“Enviar”), se envíe esa hoja que seleccione de la lista al destinatario que elegí.

Espero darme a entender... 

[Hola nuevamente

Lee el artículo enviado, ahí está la solución para enviar una hoja y puede ser fácilmente reemplazado por una variable y/u objeto. Por ejemplo, suponiendo que tu lista desplegable está en la celda A1 de la hoja "Total", entonces tomando en cuenta la macro del ejemplo sería así:

Sub EnviarMensajeOutlook() 
Dim OutlookApp As Outlook.Application 
Dim objItem As MailItem 
Dim hNombre as string
Set OutlookApp = CreateObject("Outlook.Application") 
Set objItem = OutlookApp.CreateItem(olMailItem) 
Let hNombre = Sheets("Total").Range("A1")
Sheets(hNombre).Copy 
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\Temporal.xlsx" 
ActiveWorkbook.Close 
With objItem
     .To = "[email protected]" 'Para
     .Subject = "Adjuntando archivo" 'Asunto
     .Body = "Estamos adjuntando un archivo" 'Cuerpo
     .Attachments.Add ThisWorkbook.Path & "\Temporal.xlsx"
     Application.Wait (Now + TimeValue("00:00:03")) 'Tiempo para adjuntar
     .Send 'Enviar 
End With 
Kill ThisWorkbook.Path & "\Temporal.xlsx" 
Set OutlookApp = Nothing 
Set objItem = Nothing 
End Sub 

Eso.

Abraham Valencia

“hNombre” es para que modifique con el nombre que quiero o lo dejo así?

"hNombre" es una variable que tomará el valor de la lista desplegable; como comenté yo puse de ejemplo que estaba en la hoja "Total" celda A1 [(Sheets("Total").Range("A1")] es cuestión de que reemplaces y/o adaptes.

Abraham Valencia

Dale muchísimas gracias, recién estoy aprendiendo por mi cuenta el tema Macros, por eso la ignorancia, te agradezco la paciencia jajajaja.

Pruebo y te aviso

Dale, no hay problema.

Ya comentarás.

Abraham Valencia

Cuando le doy ejecutar, me aparece el error ‘9, Subíndice fuera de intervalo

Let hNombre = Sheets (“ENVIAR”).Range(“A2”)

Esa es mi línea de código y aparece el error anterior cuando ejecuto la macro

¿En qué línea exacta marca error? Aunque no das detalle tengo la impresión de que los nombres de tu lista desplegable no son exactamente igual es a los nombres de las hojas. OJO, así se vean iguales basta un espacio delante o al final del nombre para que en lo formal sean distintos nombres.

Abraham Valencia

Let hNombre = Sheets(“ENVIAR”).Range (“A2”)

Sheets (hNombre). Copy

cuando ejecuto, me para la macro en la primera línea donde aplico el rango.

chequee los nombre y están exactamente iguales, en la celda de la lista desplegable aplique formato y cambie la fuente pero no creo que eso afecte o si?

Tendría que ver el archivo; colócalo en algún "Drive" (OneDrive, Google Drive, DropBox...) y comparte por aquí el enlace. De tener información que consideras privada, solo bórrala.

Abraham Valencia

Avísame si te deja abrirlo, sino te lo envío a otro lado

[Hola

Has colocado:

Let hNombre = Sheets("ENVIAR ").Range("A2")

Y la hoja no se llama "ENVIAR", sino "ENVIAR " ¿notas la diferencias?

Era eso.

Abraham Valencia

Nooo enserio?, jajajajaja, tenías razón al decir que un insólito espacio puede dejar sin efecto todo. Muchas gracias y disculpa la pérdida de tiempo 

Je je je, te aseguro que es más habitual de lo que te imaginas ese tipo de errores.

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas