Buenas, vereis tengo una macro que tarda en ejecutarse mas de 10 minutos debido a su complejidad y tamaño.
Como en OO no se muestra de ninguna manera que se está ejecutando la macro, hay momentos en los que se puede pensar que ha terminado y no ser así.
¿Conoceis o sabeis como puedo mostrar una barra de progreso mientras la macro se está ejecutando? o algo por el estilo
Gracias
Mostrar barra de progreso de macro
Re: Mostrar barra de progreso de macro
Hola...
Si estas en la interfaz del usuario, puedes usar la barra de estado para mostrar una barra de progreso como en:
Si estas en un cuadro de diálogo, hay un control barra de progreso especifico para ello...
Saludos
Si estas en la interfaz del usuario, puedes usar la barra de estado para mostrar una barra de progreso como en:
Código: Seleccionar todo
Sub ControlarAplicacion4()
Dim oBarraEstado As Object
Dim co1 As Integer
'Referencia a la barra de estado del documento activo
oBarraEstado = ThisComponent.getCurrentController.StatusIndicator
'Establecemos el texto inicial y el limite de la barra de progreso
oBarraEstado.start( "Procesando Líneas ", 10 )
For co1 = 1 To 10
'Establecemos el valor de la barra de progreso
oBarraEstado.setValue( co1 )
'Y el texto
oBarraEstado.setText( "Procesando la línea: " & co1 )
'Esperamos un segundo
Wait 1000
Next
'Es importante finalizar la barra de estado para devolverle el control a la aplicación
oBarraEstado.end()
End Sub
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Mostrar barra de progreso de macro
Muchas gracias, el codigo funciona correctamente.
Lo que ocurre es donde tu tienes el bucle yo hago la llamada a mi macro y funciona pero en los momentos muertos de mi macro, como por ejemplo el fitrado o la ordenación de una hoja con unos 20000 registros, sigue sin aparecer la barra.
Lo que ocurre es donde tu tienes el bucle yo hago la llamada a mi macro y funciona pero en los momentos muertos de mi macro, como por ejemplo el fitrado o la ordenación de una hoja con unos 20000 registros, sigue sin aparecer la barra.
Re: Mostrar barra de progreso de macro
Hola...
Para que una barra de progreso sea "útil", tiene que tener un valor de inicio y un fin, si no te es posible establecer estos dinámicamente, puedes probar a establecerlos de acuerdo a los pasos que tengas en tu macro, por ejemplo:
Con todo respeto y así sin ver, si tu macro se tarda más de 10 minutos en procesarse, "deberías" de revisar tus algoritmos, a menos que tengas procesos que dependen de otros o que obtengan información de internet, pero si todo es local, "deberías" buscar una segunda alternativa...
Saludos
Para que una barra de progreso sea "útil", tiene que tener un valor de inicio y un fin, si no te es posible establecer estos dinámicamente, puedes probar a establecerlos de acuerdo a los pasos que tengas en tu macro, por ejemplo:
Código: Seleccionar todo
Sub Mi_macro()
Dim oBarraEstado As Object
Dim co1 As Integer
'Referencia a la barra de estado del documento activo
oBarraEstado = ThisComponent.getCurrentController.StatusIndicator
'Establecemos el texto inicial y el limite de la barra de progreso, suponiendo que hace cinco procesos en tu macro
oBarraEstado.start( "Procesando macro ", 5 )
'Aqui tu primer proceso
'Establecemos el valor de la barra de progreso
oBarraEstado.setValue( 1 )
'Segundo proceso
oBarraEstado.setValue( 2 )
'Tercer proceso
oBarraEstado.setValue( 3 )
'Etc...
'Es importante finalizar la barra de estado para devolverle el control a la aplicación
oBarraEstado.end()
End Sub
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro