¿Como se hace una barra de progreso?

05/10/2005 - 18:57 por Manolito | Informe spam
Pues eso, agradeceria que alguien me enseñara a hacer un codigo para una
barra de progreso.
yo tengo uno pero el codigo se detiene hasta que no acaba de cargar la barra
y yo lo que quiero es que mientras hace el proceso aparezca la barra y se
vaya caragando y cuando acabe el proceso se cierre el formulario que la
contiene.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
06/10/2005 - 05:09 | Informe spam
hola, Manolito !

... codigo para una barra de progreso.
... tengo uno pero el codigo se detiene hasta que no acaba de cargar la barra
... quiero que mientras hace el proceso aparezca la barra y se vaya caragando [...]



si conocer que/como hace el codigo que comentas... -?-
1) podrias 'usar' [p.e.] la de la 'barra de estado' de la aplicacion [por un modulo 'de clase']...
en la pagina de John Walkenbach, puedes descargar un ejemplo en:
http://j-walk.com/ss/excel/files/progressbar.exe
2) o por otro tipo de objetos [formularios], prueba con los siguientes enlaces:
en la pagina de John Walkenbach, descargas un ejemplo en:
http://j-walk.com/ss/excel/files/progind.exe
en la pagina de Ole P. Erlandsen, descargas [dos] ejemplos en
1) http://www.erlandsendata.no/downloa...ontrol.zip
2) http://www.erlandsendata.no/downloa...amples.zip
otro ejemplo de XL-Logic en: http://www.xl-logic.com/xl_files/vb...e_wait.zip
otro mas en la pagina de Chip Pearson: http://www.cpearson.com/excel/Progress.htm

Microsoft KB: XL Como Mostrar un Barra Progreso con un Formulario de Usuario
[basado en la tecnica de John Walkenbach] http://support.microsoft.com/kb/211736/

saludos,
hector.
Respuesta Responder a este mensaje
#2 Manolito
06/10/2005 - 10:22 | Informe spam
gracias por tu respuesta, pero me he dado cuenta con los ejemplos que la
barra de proceso solo sirve para procesos o bucle repetitivos, pero mi
codigo lo que hace es extraer datos de varios recordsets y los va colocando
en una hoja y luego la imprimo.
Si pongo un formulario con una barra de proceso el codigo que me extrae los
datos se me detiene al abrir el formulario con la barra. y no se como hacer
para que el codigo que extrae los datos continue.
Escribo el codigo parte del codigo para que sea mas facil de entender
'1º Al abrir el libro
Private Sub Workbook_Open()
FoInicio.Show ' Muestro un formulario con tres botones
End Sub
'2º Al pulsar cualquiera de ellos muestra un formulario(FoSeleccion) donde
el usuario escoge una serie de opciones que sirven de filtro.
'3º Al presionar el boton de aceptar en FoSeleccion.
Private Sub CmdAceptar_Click()
Application.Cursor = xlWait 'Pongo el relojito
Application.DisplayStatusBar = True
Application.StatusBar = "Se está realizando la carga de datos,
sea tan amable de esperar..."

FoProceso.Show
FoProceso.lbl1 = Application.StatusBar
FoProceso.Repaint

Select Case FoInicio.Tag
Case 0 ' Si presionó el boton 0
call ExtraerDeArticulos
Case 1
call ExtraerDeAlbaran
Case 2
call ExtraerDeFactura
End Select

Unload Me
End Sub

'3º Ponemos en marcha la funcion que extrae los datos de un mdb y los
inserta en la hoja actual.

Public Sub ExtraerDeArticulos()
UserForm1.lbl1 = "Importando los articulos... Por favor espere."
UserForm1.Repaint
UserForm1.Show 'Aqui se me para el codigo
'bla, bla, bla

UserForm1.lbl1 = "Importando los precios... Por favor espere."
UserForm1.Repaint
UserForm1.Show
'bla, bla, bla.
End function

No se que hago mal pero cuando llega a la instruccion Show muestra el
mensaje pero el codigo no continua.
Haber si alguien me ayuda, gracias





"Héctor Miguel" escribió en el mensaje
news:
hola, Manolito !

> ... codigo para una barra de progreso.
> ... tengo uno pero el codigo se detiene hasta que no acaba de cargar la


barra
> ... quiero que mientras hace el proceso aparezca la barra y se vaya


caragando [...]

si conocer que/como hace el codigo que comentas... -?-
1) podrias 'usar' [p.e.] la de la 'barra de estado' de la aplicacion [por


un modulo 'de clase']...
en la pagina de John Walkenbach, puedes descargar un ejemplo en:
http://j-walk.com/ss/excel/files/progressbar.exe
2) o por otro tipo de objetos [formularios], prueba con los siguientes


enlaces:
en la pagina de John Walkenbach, descargas un ejemplo en:
http://j-walk.com/ss/excel/files/progind.exe
en la pagina de Ole P. Erlandsen, descargas [dos] ejemplos en
1) http://www.erlandsendata.no/downloa...ontrol.zip
2) http://www.erlandsendata.no/downloa...amples.zip
otro ejemplo de XL-Logic en:


http://www.xl-logic.com/xl_files/vb...e_wait.zip
otro mas en la pagina de Chip Pearson:


http://www.cpearson.com/excel/Progress.htm

Microsoft KB: XL Como Mostrar un Barra Progreso con un Formulario de


Usuario
[basado en la tecnica de John Walkenbach]


http://support.microsoft.com/kb/211736/

saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
06/10/2005 - 20:33 | Informe spam
hola, Manolito !

... pero me he dado cuenta con los ejemplos que la barra de proceso solo sirve para procesos o bucle repetitivos
... mi codigo lo que hace es extraer datos de varios recordsets y los va colocando en una hoja y luego la imprimo.
Si pongo un formulario con una barra... el codigo que me extrae los datos se me detiene al abrir el formulario con la barra [...]
... parte del codigo para que sea mas facil de entender [...]
... Ponemos en marcha la funcion que extrae los datos de un mdb y los inserta en la hoja actual.
Public Sub ExtraerDeArticulos()
UserForm1.lbl1 = "Importando los articulos... Por favor espere."
UserForm1.Repaint
UserForm1.Show 'Aqui se me para el codigo
'bla, bla, bla
UserForm1.lbl1 = "Importando los precios... Por favor espere."
UserForm1.Repaint
UserForm1.Show
'bla, bla, bla.
End function [...]



1) cuando muestras/presentas/... un formulario por medio de una instruccion 'userformX.show'
el codigo 'espera' que el usuario le devuelva una respuesta [por eso es que se detiene... VUELVES a mostrar el formulario] :-(

2) como ya lo has visto, 'actualizar' una progressbar requiere 'decirle' al codigo en que momento 'avanza' el indicador
[puede ser por bucles o 'detectando' alguna variable o 'momento' que te permita saber que ha habido cambios/avance/movimiento/...

3) usar una progressbar... sobre una base 'incierta' [en cuanto a 'medir' sus tiempos o registros]...
-> en este preciso caso por llamadas a BBDD y extraccion de recordsets... no lo veo como una opcion... 'adecuada' :-(
-> se tendria que cambiar 'de base' para usar un 'estimado' [aunque de nuevo... con base en que???]

4) a manera de informacion... cuanto tiempo tarda el codigo en rescatar los recordsets ???
[y cual es el codigo que usas para ello] ???

comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Manolito
07/10/2005 - 07:13 | Informe spam
Muchas gracias por tu ayuda, lo he solucionado abriendo el formulario del
progressbar en modal=false de esta manera el codigo no se detiene.
La transferencia de datos tarda unos 10 seg. y la hago con recordsets ADO.



"Héctor Miguel" escribió en el mensaje
news:
hola, Manolito !

> ... pero me he dado cuenta con los ejemplos que la barra de proceso solo


sirve para procesos o bucle repetitivos
> ... mi codigo lo que hace es extraer datos de varios recordsets y los va


colocando en una hoja y luego la imprimo.
> Si pongo un formulario con una barra... el codigo que me extrae los


datos se me detiene al abrir el formulario con la barra [...]
> ... parte del codigo para que sea mas facil de entender [...]
> ... Ponemos en marcha la funcion que extrae los datos de un mdb y los


inserta en la hoja actual.
> Public Sub ExtraerDeArticulos()
> UserForm1.lbl1 = "Importando los articulos... Por favor espere."
> UserForm1.Repaint
> UserForm1.Show 'Aqui se me para el codigo
> 'bla, bla, bla
> UserForm1.lbl1 = "Importando los precios... Por favor espere."
> UserForm1.Repaint
> UserForm1.Show
> 'bla, bla, bla.
> End function [...]

1) cuando muestras/presentas/... un formulario por medio de una


instruccion 'userformX.show'
el codigo 'espera' que el usuario le devuelva una respuesta [por eso


es que se detiene... VUELVES a mostrar el formulario] :-(

2) como ya lo has visto, 'actualizar' una progressbar requiere 'decirle'


al codigo en que momento 'avanza' el indicador
[puede ser por bucles o 'detectando' alguna variable o 'momento' que


te permita saber que ha habido cambios/avance/movimiento/...

3) usar una progressbar... sobre una base 'incierta' [en cuanto a 'medir'


sus tiempos o registros]...
-> en este preciso caso por llamadas a BBDD y extraccion de


recordsets... no lo veo como una opcion... 'adecuada' :-(
-> se tendria que cambiar 'de base' para usar un 'estimado' [aunque de


nuevo... con base en que???]

4) a manera de informacion... cuanto tiempo tarda el codigo en rescatar


los recordsets ???
[y cual es el codigo que usas para ello] ???

comentas?
saludos,
hector.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida