actualizacion de formulas de libro en cierto tiempo...!!!

07/02/2008 - 23:47 por Juan m | Informe spam
podran ayudarme, neceisto que al tener el archivo abierto, como dicho
archivo cuenta con diferentes formulas de tiempo.. que requiero se
actualicen constantemente... checando las opciones del excel... solo
encontre que el menor tiempo que me permite es de 5 min... la
actualizacion.

pudieran ayudarme a generar una macro, donde desde al abrir el archivo, cada
cierto tiempo, medio minuto o ciertos segundos, se esten actualizando todo
en general... casi como el aplicar el F9...

Muchas Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Abraham
08/02/2008 - 00:28 | Informe spam
Creo que esto, o algo asi, te puede servir... eso si, no me termina de
convencer, pero creo que cumple su funcion :)

Public tiempototal As Double
Public Const Tiempo As String = "00:00:30"
Sub Crono()

On Error Resume Next

Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False

tiempototal = Now + TimeValue(Tiempo)

Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=True

End Sub

Sub Actualizar()
Calculate
Crono
End Sub

Sub detener()
Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False

End Sub

Abraham
Respuesta Responder a este mensaje
#2 Juan m
08/02/2008 - 03:27 | Informe spam
muchas gracias..

muy efectiva su ayuda, y claro esta, su conocimiento.




"Abraham" escribió en el mensaje
news:
Creo que esto, o algo asi, te puede servir... eso si, no me termina de
convencer, pero creo que cumple su funcion :)

Public tiempototal As Double
Public Const Tiempo As String = "00:00:30"
Sub Crono()

On Error Resume Next

Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False

tiempototal = Now + TimeValue(Tiempo)

Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=True

End Sub

Sub Actualizar()
Calculate
Crono
End Sub

Sub detener()
Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False

End Sub

Abraham
Respuesta Responder a este mensaje
#3 Héctor Miguel
08/02/2008 - 06:22 | Informe spam
hola, Abraham !

Creo que esto, o algo asi, te puede servir... eso si, no me termina de convencer, pero creo que cumple su funcion :)



en el Sub Crono(), la primer llamada al metodo "OnTime" (con el Schedule:=False) nunca se llega a ajecutar (realmente)
puesto que "viene" de una ejecucion del Procedure:="Actualizar" y su "EarliestTime" (justo) "acaba de suceder"

se puede omitir la primer llamada el metodo y "mover" la instruccion "On Error Resume Next" al Sub detener()
incluso, podria (re)programarse el metodo dentro del mismo procedimiento Sub Actualizar() (auto-llamandose a si mismo)

saludos,
hector.

__ la propuesta original __
Public tiempototal As Double
Public Const Tiempo As String = "00:00:30"
Sub Crono()
On Error Resume Next
Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False
tiempototal = Now + TimeValue(Tiempo)
Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=True
End Sub
Sub Actualizar()
Calculate
Crono
End Sub
Sub detener()
Application.OnTime EarliestTime:=tiempototal, _
Procedure:="Actualizar", _
Schedule:=False
End Sub
Respuesta Responder a este mensaje
#4 Abraham
08/02/2008 - 21:10 | Informe spam
Hola H.M., corrigeme si me equivoco:

Supon que borro de la macro "crono", las lineas que mencionas. Ahora,
sin esas lineas, activo la macro, y apenas unos segundos despues, sin
usar la macro "detener", vuelvo a activar la macro "crono": Resultado:
un enredo de cada x segundos :(

Enonces, mi idea era que si una persona ya activo la macro "crono", y
no uso la macro "detener" y vuelve a activar "crono", pues que esta
ultima macro detenga el proceso del OnTime y se inicie sin el dilema/
enredo que menciono.

Yo ya habia probado sin esas lineas, y active 2 o 3 veces "crono" y
obtuve resultados cadad 10, o 15 o x segundos... por eso las lineas
que agregue.

Alguna sugerencia al respecto?

Abraham





On 8 feb, 00:22, "Héctor Miguel"
wrote:
hola, Abraham !

> Creo que esto, o algo asi, te puede servir... eso si, no me termina de convencer, pero creo que cumple su funcion :)

en el Sub Crono(), la primer llamada al metodo "OnTime" (con el Schedule:=False) nunca se llega a ajecutar (realmente)
puesto que "viene" de una ejecucion del Procedure:="Actualizar" y su "EarliestTime" (justo) "acaba de suceder"

se puede omitir la primer llamada el metodo y "mover" la instruccion "On Error Resume Next" al Sub detener()
incluso, podria (re)programarse el metodo dentro del mismo procedimiento Sub Actualizar() (auto-llamandose a si mismo)

saludos,
hector.

__ la propuesta original __



> Public tiempototal As Double
> Public Const Tiempo As String = "00:00:30"
> Sub Crono()
> On Error Resume Next
>  Application.OnTime EarliestTime:=tiempototal, _
>        Procedure:="Actualizar", _
>        Schedule:=False
>  tiempototal = Now + TimeValue(Tiempo)
>  Application.OnTime EarliestTime:=tiempototal, _
>        Procedure:="Actualizar", _
>        Schedule:=True
> End Sub
> Sub Actualizar()
> Calculate
> Crono
> End Sub
> Sub detener()
>  Application.OnTime EarliestTime:=tiempototal, _
>        Procedure:="Actualizar", _
>        Schedule:=False
> End Sub- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#5 Héctor Miguel
08/02/2008 - 22:49 | Informe spam
hola, Abraham !

Hola H.M., corrigeme si me equivoco:
Supon que borro de la macro "crono", las lineas que mencionas. Ahora, sin esas lineas, activo la macro
y apenas unos segundos despues, sin usar la macro "detener", vuelvo a activar la macro "crono":
Resultado: un enredo de cada x segundos :(
Enonces, mi idea era que si una persona ya activo la macro "crono", y no uso la macro "detener" y vuelve a activar "crono"
pues que esta ultima macro detenga el proceso del OnTime y se inicie sin el dilema/enredo que menciono.
Yo ya habia probado sin esas lineas, y active 2 o 3 veces "crono" y obtuve resultados cadad 10, o 15 o x segundos...
por eso las lineas que agregue. Alguna sugerencia al respecto?



bajo la suposicion que plantas, es correcto el razonamiento de incluir ambos metodos en el Sub Crono()
lo unico que estaria sucediendo (asumiendo que el usuario se la pasa ejecutando el "crono" cada x_segundos)
es que estaria "retrasando" la programacion que se habia hecho x_segundos "antes"
(con lo que podria conseguir que -en realidad- no se llegue a ejecutar nunca)

si el requisito fuera que la ejecucion (inicial) no admitiera (re)programaciones posteriores
habria que buscar un "candado logico" que haga un salto en la secuencia de cualquier reprogramacion "no admitida"
(lo cual no es sencillo, ya que la logica tendra que descartarse a si misma, y cada OnTime tiene "su propio tiempo")

por otro lado, lo de mover (o copiar) la instruccion On Error Resume Next (creo que) no esta de sobra...
si el usuario ejecuta tambien mas de una vez el Sub detener(), va a obtener errores en sus "segundas ejecuciones"

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida