Sí, claro, es posible.
Sin embargo, reconsideraría si realmente quieres que el archivo se envíe automáticamente cada vez que se grabe.
En todo caso, tal vez te convenga tener un botón de macro para que lo acciones en el momento que quieras enviarlo.
Por otra parte devbes considerar que el archivo a enviar es el mismo que tienes activo. Al utilizar la macro enviará la última versión grabada en el disco (que puede ser distinta a la que tengas en pantalla). Por esa razón, verás que lo primero que hace la macro es grabar el archivo antes de iniciar el proceso e envío.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
Sub Send_Msg()
ActiveWorkbook.Save
Dim objOL As New Outlook.Application
Dim objMail As MailItem
Set objOL = New Outlook.Application
Set objMail = objOL.CreateItem(olMailItem)
'indica aquí dónde y cómo se llama el archivo a enviar.
AttachmentPath = "C:\TuDirectorio\TuArchivo.xls"
With objMail
.To = "
[email protected] ;
[email protected]" ' cambia a la lista de destinatarios de correo que desees (o a uno solo)
.Subject = "Aquí coloca el título de tu mensaje"
. Body = "Aquí coloca el mensaje que quieres que aparezca" 'Puedes capturarlo de una celda o tipearlo directamente.
'adjunta archivo
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
Else
MsgBox "Problema con el path"
End If
.Send
End With
Set objMail = Nothing
Set objOL = Nothing
MsgBox "Mail enviado"
End Sub
En cualquier caso, también podrías tomar los datos de algunas celdas de la planilla, si es que estos cambiaran con alguna frecuencia.
Importante: Para que este código funcione, debe estar instalada la biblioteca de Outlook.
Dentro del Editor de Visual Basic, haz click en "Herramientas" | "Referencias"; busca y marca (si no lo estuviera) la biblioteca "Microsoft Outlook Object Library"
Bueno, Fransuar, espero que esto te ayude a completar tu proyecto.
Un abrazo!
Fernando