Macro para enviar la hoja activa por email en Excel
Una de mis labores diarias es usar un archivo de Excel con varias hojas. Al terminar de trabajar el archivo, tengo que enviar una hoja del mismo archivo por mail. Esto es lo que hago regularmente:
- Desde EXCELeINFO add-in uso la herramienta Guardar hoja activa como archivo nuevo.
- Después me voy a la pestaña Archivo y eligo la opción Compatir. Después elijo Correo electrónico.
- Cuando ya he enviado el archivo me voy de nuevo a EXCELeINFO y elijo Archivos > Cerrar y eliminar archivo activo.
Con práctica, el proceso realmente se vuelve muy ágil por lo que podría decirse que es efectivo.
Pero qué pasa si todavía lo quisiéramos agilizar más ??
Ver video Enviar hoja activa por email
Enviar hoja de Excel por email en dos pasos
He desarrollado una macro, la cual les comparto, la cual realizar los pasos anteriores, pero en menos pasos.
Al ejecutar la macro, preguntará sobre el nombre que deseamos ponerle al archivo que se creará. En caso de que no se especifique uno, tomará el mismo nombre de la hora como nombre de archivo.
En el código vba le podemos asignar la extensión del archivo que se creará.
Figura 1. Asignar nombre de archivo.
Al ingresarle un nombre de archivo se nos abrirá una ventana de Outllok donde elegiremos los destinatarios, asunto y cuerpo del mensaje.
Nota: Outlook de Office deberá estar instalado y configurado para enviar correos.
Figura 2. Ventana de Outllok para enviar la hoja.
Como paso final, el archivo temporal se eliminará de nuestro disco duro.
Código vba de la macro
'--------------------------------------------------------------------------------------- ' Module : Módulo1 ' Author : MVP Excel, Sergio Alejandro Campos ' Date : 26/03/2015 ' Purpose : Enviar por email la hoja activa '--------------------------------------------------------------------------------------- ' Option Explicit ' Sub EviarHojaEmail() ' Dim NombreArchivo As String Dim RutaTemporal As String Dim Mensaje As String ' On Error Resume Next ' Mensaje = "Estás a punto de enviar la hoja activa por email. Ingresa el nombre con que se enviará el archivo o deja en blanco para que el archivo tenga el nombre de la hoja." NombreArchivo = InputBox(Mensaje, "EXCELeINFO") ' If NombreArchivo = "" Then NombreArchivo = ActiveSheet.Name ' RutaTemporal = Environ("temp") & "\" NombreArchivo = RutaTemporal & NombreArchivo & ".xlsx" ActiveWorkbook.ActiveSheet.Copy Application.DisplayAlerts = False ActiveWorkbook.SaveAs NombreArchivo Application.DisplayAlerts = True CommandBars.ExecuteMso ("FileSendAsAttachment") ActiveWorkbook.Close False Kill NombreArchivo ' On Error GoTo 0 ' End Sub