Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Enviar por correo una hoja como archivo adjunto

| 8 comentarios

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.

Imagen 21 300x112, Enviar por correo una hoja como archivo adjunto

(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

8 comentarios

Deja una respuesta

Los campos requeridos estan marcados con *.