Macro para enviar hoja de excel en formato CSV(delimitado por comillas) por medio de Outlook cada cierto tiempo

Buenas Noches, soy nuevo en la página y espero aportar tanto como me ayuden o más.

Miren, tengo un libro con una bitácora y una hoja llamada "estatus", la cual tiene fórmulas a base de la hoja "bitácora". Lo que quiero es enviar por correo en Outlook la hoja "estatus" como si fuera un libro nuevo en formato CSV(delimitado por comillas) pero solo con los valores de las celdas, NO con las fórmulas. Y que se envíe esta hoja cada 60 minutos AUTOMÁTICAMENTE.

Así mismo les quisiera pedir, si me pueden poner la macro y más abajo me pueden poner la misma macro pero explicada, (más que nada para entender los comandos escritos y el porque de los mismos)

Muchas Gracias por el tiempo

1 respuesta

Respuesta
1

Esta es la macro para enviar la hoja estatus. Pon las macros en un módulo.

Sub enviar()
'Por.DAM
    'Se desactivan la actualización
    Application.ScreenUpdating = False
    'se desactivan los mensajes
    Application.DisplayAlerts = False
    'nombre donde se va a guardar el archivo
    ruta = ThisWorkbook.Path & "\"
    'nombre del archivo csv
    nombre = "estatus_actual.csv"
    'se copia la hoja estatus y se guarda como csv
    Sheets("estatus").Copy
    ActiveWorkbook.SaveAs _
        Filename:=ruta & nombre, _
        FileFormat:=xlCSV
    'se cierra el nuevo libro csv
    ActiveWorkbook. Close
    'se envía el correo
    Correo ruta, nombre
    'Se repite la macro cada 60 minutos
    Application. OnTime Now + TimeSerial(0, 60, 0), "enviar"
End Sub
Sub correo(ruta, nombre)
'Por.Dam
    'Para enviar el correo por outlook
    Set dam = CreateObject("outlook.application").createitem(0)
    'destinatario, asunto, cuerpo y archivo a enviar
    dam.To = "[email protected]" 'Destinatarios
    dam.Subject = "asunto" '"Asunto"
    dam.body = "cuerpo" '"Cuerpo del mensaje"
    dam.Attachments.Add ruta & nombre
    dam.send 'enviar
End Sub
Sub cancelar()
'Por.DAM
    'Esta macro se utiliza para cuando cierras el libro y ya no se vuelva a enviar el archivo
    On Error Resume Next
    Application.OnTime Now + TimeSerial(0, 60, 0), "enviar", , False
End Sub

Sigue las Instrucciones para poner las macros en un módulo

1. Abre tu archivo de excel

2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11

3. En el menú elige Insertar / Módulo

4. En el panel del lado derecho copia la macro

Ahora las siguientes macros deberás ponerlas en los eventos de workbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Por.DAM
    cancelar
End Sub
Private Sub Workbook_Open()
'Por.DAM
    enviar
End Sub

Instrucciones para poner la macro en ThisWorkbook

1. Abre tu libro de excel

2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11

3. Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook

4. Del lado derecho copia las macros

Todas las macros llevan comentarios de lo que hace cada línea.

Si tienes problemas para poner las macros tendrás que enviarme tu archivo para adaptarle las macros.

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas