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:

  1. Desde EXCELeINFO add-in uso la herramienta Guardar hoja activa como archivo nuevo.
  2. Después me voy a la pestaña Archivo y eligo la opción Compatir. Después elijo Correo electrónico.
  3. 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 ??

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á.

image

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.

image

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

You may also like...