Como hacer una pausa en VBA.
Espero me puedan ayudar, les cuento:
Tengo una macro en excel que recupera información de un servidor XX, la cual se demora bastante tiempo por cada archivo que extrae (varias horas en completar 1 solo archivo), es por eso que dejo extrayendo varios archivos durante el fin de semana. El problema es que durante ese intervalo de tiempo (poco más de 60 horas), en algún momento se pierde la conexión con el servidor del cual se extraen los datos, por lo que el proceso se interrumpe y cuando llego el día lunes o si me conecto desde mi casa (cosa que no me gusta :)), debo hacer click en depurar y luego F5 para que continué, pero pierdo tiempo y se atrasa la extracción de la información.
Estoy hace poco aprendiendo a programar en VBA para excel (pero algo conozco de programación en JAVA, así que no se me ha hecho difícil), encontré un capítulo que habla de manejo de errores, por lo que se me "ocurrio" que con eso podría hacer una rutina para que al perder la conexión se pueda esperar un tiempo y luego continuar.
Ya entiendo como hacer para capturar el error, pero estoy buscando la forma de que cuando me capture el error haga una "pausa" de unos 10 o 15 minutos antes de volver a ejecutar la instrucción en la cual se detuvo el programa. Estuve viendo la función Timer(), pero el problema es que me sobrecarga el procesador, por lo que ya tengo casi descartado utilizar ese método.
Buscando encontré que se podría usar Sleep, llamando un "kernel" de windows, pero esta función no se realmente bien como funciona y tampoco si mientras se ejecuta ocupará demasiados recursos, ya que tampoco se cuanto dura la desconexión con el servidor, pero supongo que debe ser de algunos segundos o minutos.
En resumen lo que quiero es que si ocurre la pérdida de conexión, espere 15 minutos y vuelva a intentarlo, pero sin sobrecargar el procesador del computador (recuerden que hay que ahorrar energía :)), puede que exista otra forma y se los agradecería que me la comentaran.
Espero haberme explicado lo suficientemente claro (hice mi mayor esfuerzo) como para encontrar la solución a mi inquietud.
Tengo una macro en excel que recupera información de un servidor XX, la cual se demora bastante tiempo por cada archivo que extrae (varias horas en completar 1 solo archivo), es por eso que dejo extrayendo varios archivos durante el fin de semana. El problema es que durante ese intervalo de tiempo (poco más de 60 horas), en algún momento se pierde la conexión con el servidor del cual se extraen los datos, por lo que el proceso se interrumpe y cuando llego el día lunes o si me conecto desde mi casa (cosa que no me gusta :)), debo hacer click en depurar y luego F5 para que continué, pero pierdo tiempo y se atrasa la extracción de la información.
Estoy hace poco aprendiendo a programar en VBA para excel (pero algo conozco de programación en JAVA, así que no se me ha hecho difícil), encontré un capítulo que habla de manejo de errores, por lo que se me "ocurrio" que con eso podría hacer una rutina para que al perder la conexión se pueda esperar un tiempo y luego continuar.
Ya entiendo como hacer para capturar el error, pero estoy buscando la forma de que cuando me capture el error haga una "pausa" de unos 10 o 15 minutos antes de volver a ejecutar la instrucción en la cual se detuvo el programa. Estuve viendo la función Timer(), pero el problema es que me sobrecarga el procesador, por lo que ya tengo casi descartado utilizar ese método.
Buscando encontré que se podría usar Sleep, llamando un "kernel" de windows, pero esta función no se realmente bien como funciona y tampoco si mientras se ejecuta ocupará demasiados recursos, ya que tampoco se cuanto dura la desconexión con el servidor, pero supongo que debe ser de algunos segundos o minutos.
En resumen lo que quiero es que si ocurre la pérdida de conexión, espere 15 minutos y vuelva a intentarlo, pero sin sobrecargar el procesador del computador (recuerden que hay que ahorrar energía :)), puede que exista otra forma y se los agradecería que me la comentaran.
Espero haberme explicado lo suficientemente claro (hice mi mayor esfuerzo) como para encontrar la solución a mi inquietud.
1 respuesta
Respuesta de Isaac Reyes
1