Medidor de Progreso de una Consulta

Hola, Que tal.
Sabes, tengo una aplicación hecha en VBA y Excel, la cual recupera datos desde una BD Oracle y los despliega en la planilal. Esto lo realiza bien.
Esta consulta es activada desde un CommandButton (forms) que se encuentra en la hoja de calculo.
El proceso funciona y no tengo inconvenientes en recuperar los datos (me gustaría que fuera más rapido (demora cerca de 1 min), ¿si sabes como?)
Lo que yo quiero introducir es un mensaje que me avise que EXCEL está haciendo algo. Ya que ahora cada vez que presiono el CommandButton, excel se bloquea hasta que recupera todos los datos. He intentado usar el MousePointer, pero no alcanza a activarse. (Al momento de hacer click en el botón, todo se bloquea) Será acaso algún problema de Memoria RAM de mi equipo. Win98-64RAM-Celeron 633
¿Si tienes alguna sugerencia al respecto?
Estoy utilizando
Excel 97
Oracle 8
Oracle Objects for Ole 2.0
Gracias por la ayuda.

1 Respuesta

Respuesta
1
Puedes probar con lo siguiente:
Public Sub Recuperando_Datos()
'Se desactiva la actualizacion de pantalla
Application.ScreenUpdating = False
'Se desactiva el calculo automatico, ten cuidado con esto, por que
'si haces calculos en celdas durante el proceso, si desactivas el
'calculo automatico, no te dara los resultados esperados
Application.Calculation = xlCalculationManual
'Ponemos un mensaje en la barra de estado
Application.StatusBar = "Estoy trabajando, espera por favor..."
'Aqui va tu codigo para recuperar datos
'Le devolvemos el control de la barra de estado a Excel
Application.StatusBar = False
'Reactivamos la actualizacion de pantalla
Application.ScreenUpdating = False
'Ponemos el calculo en automatico
Application.Calculation = xlCalculationAutomatic
End Sub
'No se como recuperes tus datos, pero cuando hago procesos en
'ciclos y no quiero que se "bloquee", bueno realmente no se
'bloquea (cuando todo esta bien), sino que se apropia de los
'recursos del sistema (procesador sobre todo)
Public Sub Recupera_Datos2()
Dim co1 As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For co1 = 1 To 5000
'Con esta linea, evitamos que se apropie de los recursos del sistema
'le estamos diciendo a Windows que atienda otras peticiones de
'procesos
DoEvents
Application.StatusBar = "Recuperando " & Format(co1)
Next co1
Application.StatusBar = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Añade tu respuesta

Haz clic para o