Ejecutar una macro en una fecha!

doctor_vai -  
tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   -
Buenas noches!

Dentro de un pequeño proyecto, me gustaría que una macro se ejecute automáticamente cada inicio de lunes de cada semana en Excel.
¿Cómo hacerlo?

Gracias de antemano
Configuración: Windows XP Firefox 3.5.2

7 respuestas

doctor_vai
 
¡UP!
0
ben13.51 Mensajes publicados 115 Estado Miembro 7
 
intenta algo así

If weekday(Now,2)=2 then
Tu macro...
end if

y insertas este código en la página de código de este libro de Excel y cambias la lista desplegable en la parte superior izquierda de "générale" a "workbook"

eso lanzará la macro al abrir el libro

la única condición: debes abrir el libro cada lunes por la mañana...
0
doctor_vai
 
¿Podrías aclarar más qué significa "now"?

muchas gracias
0
ben13.51 Mensajes publicados 115 Estado Miembro 7
 
Now es una función de VBA que contiene la fecha y la hora del momento correspondiente a la fecha y hora de tu sistema (ordenador)

para saber más, seleccionas la palabra now en tu página de código y pulsas F1... la página de ayuda de VBA se abrirá directamente en la ayuda para la función now...
0
tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   460
 
Hola,
la solución por macro con funciones como NOW requiere que el libro esté abierto y que un bucle permita esperar, parece un poco delicado...
Personalmente, yo iría más bien por una tarea programada de Windows que abra el libro colocando la macro en el evento Workbook_Open()... atención a 2 puntos: probar el día en la macro si este libro puede estar abierto en otros momentos, el PC debe estar encendido para que la tarea programada se dispare....
0
ben13.51 Mensajes publicados 115 Estado Miembro 7
 
¿Qué entiendes por «que un bucle permita esperar»?
0
tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   460
 
para lanzar un tratamiento automáticamente en un momento dado, hay que poder probar periódicamente ese momento para saber cuándo ejecutar el procedimiento. Esto no puede hacerse sino con un tratamiento que funcione continuamente en un bucle tipo "while not now = moment, wait x segundos....." => un tratamiento que corre en continuo para verificar el "momento" y llamar al procedimiento cuando corresponde, de ahí mi propuesta de usar el servicio "scheduler" de Windows....
0