Ejecucion automatica de un procedimiento

26/04/2005 - 10:00 por Rantamplan | Informe spam
Buenas,
quiero que a las 22:00h, diariamente, se guarde el libro abierto con un
nombre específico (con formato dd.mm.yyyy).
Para ello he realizado dos procedimientos:

Public Sub Grabacion_Diaria()
Application.OnTime TimeValue("22:00:00"),"GuardarComo"
End Sub

Public Sub GuardarComo()
dia_actual = Format(Date,"d.mmmm.yyyy")
fichero = "c:\"+dia_actual+".xls"
Application.ActiveWorkok.ActiveSheet.SaveAs Filename:=fichero
End Sub

El problema lo tengo es que no se donde ubicar ese codigo (dentro de una
hoja, ThisWorkBook, un modulo... etc etc) para que se ejecute cuando llegue
la hora indicada.
Por lo que he leido el evento OnTime no está asociado a ningun objeto, se
accede a ellos medianto métodos del objeto Application, pero no acabo de
pillarle el puntillo y no se muy bien donde ubicar el codigo o como
enlazarlo.

Gracias,
Salu2!.



"los videojuegos no tienen ninguna influencia sobre los niños.
Quiero decir, si el Pac-Man hubiese influenciado a nuestra generación,
estaríamos todos corriendo en salas oscuras, masticando píldoras
mágicas y escuchando músicas electrónicas repetitivas".
Kristian Wilson, Nintendo Inc., 1989
 

Leer las respuestas

#1 KL
26/04/2005 - 11:21 | Informe spam
Hola Rantamplan,

El truco esta en que de alguna manera tienes que volver a llamar el
procedimiento GrabacionDiaria cada vez que se haya ejecutado. Prueba lo
siguiente (hecho a base del codigo para conseguir el parpadeo de celdas
publicado por Fernando Arroyo en este sitio:
http://www.excelsp.com/faqs01.htm#faqs01_15 ):

1) En el modulo ThisWorkbook(EsteLibro) pon este codigo:

'--Modulo ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenerGrabacion
End Sub

Private Sub Workbook_Open()
IniciarGrabacion
End Sub
'--Modulo ThisWorkbook

2) En un modulo estandar (no de hoja , libro o formulario) digamos Modulo1
pon:

'--Modulo1
Dim Hora As Date

Sub IniciarGrabacion()
Hora = TimeValue("22:00:00")
Call GuardarComo
Application.OnTime Hora, "IniciarGrabacion"
End Sub

Sub DetenerGrabacion()
Application.OnTime Hora, "IniciarGrabacion", schedule:=False
End Sub

Public Sub GuardarComo()
dia_actual = Format(Date,"d.mmmm.yyyy")
fichero = "c:\"+dia_actual+".xls"
Application.ActiveWorkok.ActiveSheet.SaveAs Filename:=fichero
End Sub
'--Modulo1

3) Guarda, cierra y vuelve a abrir el archivo.

Saludos,
KL


Public Sub Grabacion_Diaria()
Application.OnTime TimeValue("22:00:00"),"GuardarComo"
End Sub

Public Sub GuardarComo()
dia_actual = Format(Date,"d.mmmm.yyyy")
fichero = "c:\"+dia_actual+".xls"
Application.ActiveWorkok.ActiveSheet.SaveAs Filename:=fichero
End Sub

El problema lo tengo es que no se donde ubicar ese codigo (dentro de una
hoja, ThisWorkBook, un modulo... etc etc) para que se ejecute cuando
llegue
la hora indicada.
Por lo que he leido el evento OnTime no está asociado a ningun objeto, se
accede a ellos medianto métodos del objeto Application, pero no acabo de
pillarle el puntillo y no se muy bien donde ubicar el codigo o como
enlazarlo.

Gracias,
Salu2!.



"los videojuegos no tienen ninguna influencia sobre los niños.
Quiero decir, si el Pac-Man hubiese influenciado a nuestra generación,
estaríamos todos corriendo en salas oscuras, masticando píldoras
mágicas y escuchando músicas electrónicas repetitivas".
Kristian Wilson, Nintendo Inc., 1989

Preguntas similares