Mostrar barra de progreso de macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

Mostrar barra de progreso de macro

Notapor yohana » Mar Oct 06, 2009 11:56 am

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
yohana
 
Mensajes: 66
Registrado: Mar Jun 30, 2009 2:42 pm

Re: Mostrar barra de progreso de macro

Notapor mauricio » Mar Oct 06, 2009 4:39 pm

Hola...

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   Expandir vistaContraer vista
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


Si estas en un cuadro de diálogo, hay un control barra de progreso especifico para ello...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 6058
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Mostrar barra de progreso de macro

Notapor yohana » Mié Oct 07, 2009 8:10 am

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.
yohana
 
Mensajes: 66
Registrado: Mar Jun 30, 2009 2:42 pm

Re: Mostrar barra de progreso de macro

Notapor mauricio » Mié Oct 07, 2009 11:44 pm

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:

Código: Seleccionar todo   Expandir vistaContraer vista
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


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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 6058
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado