Mostrar barra de progreso de macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
yohana
Mensajes: 66
Registrado: Mar Jun 30, 2009 2:42 pm

Mostrar barra de progreso de macro

Mensaje por yohana »

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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Mostrar barra de progreso de macro

Mensaje por mauricio »

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

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

Re: Mostrar barra de progreso de macro

Mensaje por yohana »

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.
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Mostrar barra de progreso de macro

Mensaje por mauricio »

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

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
Responder