Visual Basic para Aplicaciones - Macro ejecutable todos los días -vba Excel-

Life is soft - evento anual de software empresarial
 
Vista:

Macro ejecutable todos los días -vba Excel-

Publicado por JoaoTomas (4 intervenciones) el 30/12/2019 20:03:26
Hola a todos,

Tengo una duda algo tonta porque esto es a base de probar creo yo más que nada, pero no me queda del todo claro:

Necesito que dejando un archivo abierto durante todo un fin de semana, se ejecute automáticamente todos los días y a la misma hora, uno de los procedimientos (o sub) del archivo.

Actualmente utilizo tal que esto desde el thisWorbook (Private Sub Workbook_Open()):

Application.OnTime TimeValue("15:00:00"), "macroAEjecutar"

Ésto hace que solo se ejecute al siguiente día a la hora señalada, pero no se ejecute dos días seguidos. Es decir, si yo abro excel un viernes, el sábado a las 15h se ejecuta, pero no así el domingo a la misma hora.

¿alguna idea de como hacer que esa macro se ejecute a diario siempre que el archivo siga abierto?

Un cordial saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 138
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Macro ejecutable todos los días -vba Excel-

Publicado por gilman (47 intervenciones) el 31/12/2019 09:35:49
Prueba:
1
2
3
4
5
6
7
8
9
10
11
Public Sub macroAEjecutar()
    'Aquí vendría el codigo a ejectuar
 
 
 
 
    'Una vez que se ha ejecutado la macro volver a programarla
    'Hay que tener en cuenta que si se sale de la macro por varios puntos debería ejecutarse
    'por cada uno de esos puntos
    Application.OnTime TimeValue("15:00:00"), "macroAEjecutar"
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Macro ejecutable todos los días -vba Excel-

Publicado por Antoni Masana (498 intervenciones) el 31/12/2019 14:26:50
Buenas Joao Tomas.

Permíteme explicarte otra forma de hacerlo en la que no es necesario tener el libro abierto todo el día.
La idea es básicamente abrir el libro, ejecutar la macro, cerrar el libro y para ahorrar energía poner a dormir el ordenador.
Todo ello se hace con el Programador de Tareas. Creas una tarea para que se ejecute cada día o viernes, sábado y domingo a las 15h.

Ejecuta una BAT tal que esto:

1
2
3
4
5
@echo off
echo >C:\Tmp\Excel_Run_Macro.tmp
"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"  C:\Directorio\TU_LIBRO.xlsm
DEL C:\Tmp\Excel_Run_Macro.tmp
ShutDown /h

El ShutDown pone el ordenador a hibernar y se despierta cuando el programador tiene que activar una tarea.

En el libro debes poner:

1
2
3
4
5
6
7
Sub Workbook_Open()
    If Dir("C:\Tmp\Excel_Run_Macro.tmp") <> "" Then
        macroAEjecutar        ' --- Ejecuta la Macro
        ActiveWorkbook.Save   ' --- Guarda el libro
        Application.Quit      ' --- Cierra el Excel
    End If
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro ejecutable todos los días -vba Excel-

Publicado por JoaoTomas (4 intervenciones) el 03/01/2020 18:42:36
Muchas gracias por tu respuesta,

Esto sería lo ideal, pero el equipo que uso, trabaja en un entorno de red, y el administrador tiene deshabilitadas las tareas programadas en los perfiles de usuario.

¿alguna otra idea dejando el excel abierto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro ejecutable todos los días -vba Excel-

Publicado por JoaoTomas (4 intervenciones) el 03/01/2020 18:40:59
El problema es ese, el volverla a programar.
Tal como indicas, entiendo que no se vuelve a ejecutar salvo que yo llame a esa macro, pero ...... ¿como la llamo automáticamente y a la misma hora el día siguiente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Macro ejecutable todos los días -vba Excel-

Publicado por Antoni Masana (498 intervenciones) el 03/01/2020 19:52:43
En algún lugar de tu código tienes algo asi:

1
2
3
Private Sub Workbook_Open()
    Application.OnTime TimeValue("15:00:00"), "macroAEjecutar"
End Sub

En otra parte de tu código tienes una macro que se llama: macroAEjecutar.

Pues como te dice Gilman debes añadir como última línea la indicada:

1
2
3
4
5
6
7
8
Public Sub macroAEjecutar()
    'Aquí vendría el codigo a ejectuar
 
    'Una vez que se ha ejecutado la macro volver a programarla
    'Hay que tener en cuenta que si se sale de la macro por varios puntos debería ejecutarse
    'por cada uno de esos puntos
    Application.OnTime TimeValue("15:00:00"), "macroAEjecutar"
End Sub

Esta última línea volverá a ejecutar la macro cuando sean 15h.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Macro ejecutable todos los días -vba Excel-

Publicado por JoaoTomas (4 intervenciones) el 03/01/2020 20:10:30
Ahora lo entendí!

Gracias a ambos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar