Buena tarde mi consulta es como crear un macro

Q a los 3 minutos de estar abierto una hoja excel ejecute la acción de enviar esta hoja por correo electrónico a varios destinatarios

1 Respuesta

Respuesta
3

Pon la siguiente macro en los eventos de workbook:

Private Sub Workbook_Open()
'Por.Dante Amor
    Application.OnTime Now + TimeValue("00:03:00"), "EnviarHoja"
End Sub

Instrucciones para poner la macro en los eventos 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 la macro

Pon la siguiente macro en un módulo:

Sub EnviarHoja()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    ruta = ThisWorkbook.Path & "\"
    nombre = ActiveSheet.Name
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=ruta & nombre & ".xlsx"
    ActiveWorkbook.Close False
    '
    Set dam = CreateObject("outlook.application").createitem(0)
    dam.to = "[email protected][email protected]"
    dam.Subject = "asunto de mensaje"
    dam.Body = "Cuerpo del coreo"
    dam.Attachments.Add ruta & nombre & ".xlsx"
    dam.Send
End Sub

Sigue las Instrucciones para poner la macro 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

Cambia en la macro lo siguiente:

Los destinatarios deben ir separados por punto y coma (;), todos los destinatarios que pongas deberán ir entre comillas, tal y como se muestra en el ejemplo:

dam.to = "[email protected]; [email protected]"

Cambia el texto "asunto de mensaje", por el mensaje que quieras que aparezca en el asunto.

Cambia el texto "Cuerpo del coreo", por el mensaje que quieras que aparezca en el correo.


Para que se ejecute la macro, cuando abres el libro deberán activarse las macros, a los 3 minutos se enviará la hoja.


Saludos. Dante Amor

¡Gracias! lo pruebo y comento gracias por la ayuda

Claro, cualquier duda avísame. Si es lo que necesitas.

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Saludos. Dante Amor

Buen di ate comento que trato que lo envié usando gmail y no outlook pero como esta actual a cada 3 minutos me abre un nuevo libro y yo necesito es que cuando este abierto mi libro que se llama reporte el cual abro como una tarea programada de windows a las 7 de la mañana y luego según la hora se llena de una base de datos entonces es cuando necesito que me lo envíe automático a varios destinatarios pero usando una cuenta de gmail


                    

si me puedes ayudar gracias

La macro se ejecuta a los 3 minutos después de que abriste el libro, eso es lo que pediste.

Sigue las instrucciones tal cual las puse y verás que solamente se ejecuta una vez.

Revisa que hayas puesto la macro en los eventos de thisworbook

Cambia la macro que pusiste en un módulo por esta macro para enviar por gmail

Cambia en estas líneas tu correo de gmail y tu password.

correo = "[email protected]"
passwd = "pwd"

Sub EnviarHoja()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    ruta = ThisWorkbook.Path & "\"
    nombre = ActiveSheet.Name
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=ruta & nombre & ".xlsx"
    ActiveWorkbook.Close False
    '
    Dim Email As CDO.Message
    '
    correo = "[email protected]"
    passwd = "pwd"
    '
    Set Email = New CDO.Message
    Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    Email.Configuration.Fields(cdoSendUsingMethod) = 2
    With Email.Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)
        .Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = correo
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = passwd
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    End With
    With Email
        .To = "[email protected][email protected]"
        .From = correo
        .Subject = "asunto de mensaje"
        .TextBody = "Cuerpo del coreo"
        .AddAttachment ruta & nombre & ".xlsx"
        .Configuration.Fields.Update
        On Error Resume Next
        .Send
    End With
    If Err.Number = 0 Then
        MsgBox "El mail se envió con éxito"
    Else
        MsgBox "Se produjo el siguiente error: " & Err.Number & " " & Err.Description
    End If
    Set Email = Nothing
End Sub

Te anexo mi archivo para que lo pruebes.

https://www.dropbox.com/s/rbs7s7k7zqp0j36/correo%20gmail6.xlsm?dl=0 


O crea un botón y pones la macro EnviarHoja y ejecutas la macro simplemente presionando el botón.

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro 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
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    1. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: EnviarHoja
  9. Aceptar.
  10. Para ejecutarla dale click a la imagen.

Listo ya tienes ambas macros para enviar por outlook y por gmail y me archivo para que revises el funcionamiento.


Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas