Esta macro te permite enviar un hoja de Excel que queramos por correo desde Microsoft Outlook. Para poder ejecutar esta macro es necesario activar la opción de referencia para el Microsoft Outlook. Para hacer esto, abrimos el VB Editor, seleccionamos Herramientas/Referencias y buscamos Biblioteca de Microsoft Outlook y activamos la casilla.
Paso 1: Declaramos dos variables .Para este ejemplo tenemos la Variable OLApp de tipo objeto que se encargará de abrir ejecutar el programa de Outlook. Y la segunda variable, OLMail que almacenará el correo.
Dim OLApp As Outlook.Application
Dim OLMail As Object
Paso 2: Copiamos las hojas que queremos enviar y se guardan en un archivo temporal. Al momento de grabar el nuevo archivo con la hoja, seleccionaremos también la ruta para el archivo.
Sheets("Revenue Table").Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\TempRangeForEmail.xlsx"
Paso 3: Se llama a abrir el Outlook y se abre una ventana de mensaje nuevo:
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(0)
OLApp.Session.Logon
Paso 4: Se llena el correo en blanco con los destinatarios, las copias, las copias ocultas, el asunto y el contenido del mensaje y el archivo adjunto. Para este ultimo, se debe colocar la ruta en donde se encuentra guardado el archivo temporal que se generó anteriormente. Luego de esto se mostrará la ventana de nuevo mensaje con los datos llenados.
With OLMail
.To = "admin@dominio.com; mike@dominio.com"
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Sample File Attached"
.Attachments.Add (ThisWorkbook.Path & "\TempRangeForEmail.xlsx")
.Display
End With
En este paso, se está terminando con el comando .Display, el permite que se muestre el mensaje que generamos. Sin embargo, también podemos modificar se puede usar el comando .Send para que envíe directamente el correo sin mostrarlo.
(Para mayor visualización de la imagen, hacer click en la misma)
Paso 5: Una vez que enviamos el mensaje, debemos proceder a borrar el archivo temporal que generamos en Excel.
ActiveWorkbook.Close SaveChanges:=True
Kill ThisWorkbook.Path & "\TempRangeForEmail.xlsx"
Paso 6: Finalmente, se recomienda dejar las variables libre para evitar algun problema con errores posteriores a la ejecución. Para ello, igualamos las variales a Nothing.
Set OLMail = Nothing
Set OLApp = Nothing
Por: Alonso Rueda
05/04/2015 a las 9:57 pm
quisiera saber como enviar una hoja de excel donde guarda informacion de venta cada hora en automático a varios correos
13/04/2016 a las 11:36 am
Solo una pequeña corrección al declarar variables para las ultimas versiones del Outlook.
Set OLApp = CreateObject("Outlook.Application")
Set OLMail = OLApp.CreateItem(0) 'olMailItem=0
Sheets("FILL RATE TOTAL").Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "TempRangeForEmail.xlsx"
OLApp.Session.Logon
''''''''
With OLMail
.To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com"
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Sample File Attached"
.Attachments.Add (ThisWorkbook.Path & "TempRangeForEmail.xlsx")
.Display
End With
ActiveWorkbook.Close SaveChanges:=True
Kill ThisWorkbook.Path & "TempRangeForEmail.xlsx"
Set OLMail = Nothing
Set OLApp = Nothing
28/04/2016 a las 9:17 am
tengo generada una macro que me envia un rango de datos en el cuerpo del mensaje. uso .display en lugar de .send, por si quiero agregar algun comentario.
el problema surge cuando decido no enviar el mail que genero con .display.
no encuentro como deshacer o hacer desaparecer el encabezado del email, y volver a la hoja de calculo. agradeceria toda ayuda que me puedan brindar.
02/03/2018 a las 11:40 am
hola que tal, yo tengo un formulario en exel una planilla que lleno todos los dias la guardo y luego salgo de exel para que quede vacia nuevamente
una ves llena nececito que se guarde a pdf y ese mismo enviarlo por email, uso como correo predeterminado Thunderbird.
07/08/2019 a las 10:33 am
Excelente!!!!!
11/10/2019 a las 11:28 am
Que tal, si quisiera enviar varias hojas del libro que tendría que hacer
21/04/2020 a las 11:57 pm
porque no llegan los correos que envio de una hoja de excell?
si lo envio de un archivo excell
11/05/2020 a las 11:27 am
Buenas!!! No consigo que el rango se adjunte al correo. Se genera e-mail con la macro pero el rango se me abre en otro libro de Excel nuevo. Yo necesito que se incluya directamente en el correo que sale. Estoy haciendo algo mal? Mil gracias