Estoy interesado en poder utilizar en un UserForm el Microsoft ProgressBar Control, con la idea de que me muestre en pantalla el progreso de un proceso, para "aliviar" visualmente el tiempo mientras Excel lo está ejecutando, del orden de unos 8 a 10 segundos.
Me puede ayudar alguien, a aclararme los valores que este control necesita recibir para mostrar la barra de progreso...?
Un pequeño ejemplo que funcione... seria el ideal para aclararme, ya que tengo varias preguntas sin respuesta, como en que parte de un macro hay que incluirlo... en que se basa la barra de progreso para poder mostrar graficamente el tiempo transcurrido y el que falta por transcurrir... como hacer que el proceso de Excel siga su curso sin que mostrar este control detenga el proceso... y pienso que verlo funcionando sobre un ejemplo sencillo me aclararia las cosas.
Hola José Luis,
No puedo ayudarte mucho con ese control. Por lo pronto, a mi me tira un error cada vez que lo cargo (win xp sp3, con office 2007)...
Hay soluciones alternativas, más o menos creativas. La que yo te propongo es a la que yo he llegado, que muestra un control de progreso en la barra de tareas propia de Excel. No llama a nuevas OCX ni nada que no cargue con Excel, con lo que no precisa que aprendas cómo funcionan otras cosas que no son Excel.
http://www.trazex.com/2012/01/04/barra-de-progreso-en-la-barra-de-estado/
Hasta muestra un reloj de avance...
Si no te convence, el ProgressBar yo antes lo "emulaba" con otra macro que cargaba un SubFormulario, pero me resultaba un poco pesado cada vez que lo quería llamar. Si necesitas esa macro, puedo rebuscar la versión anterior.
Un saludo
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Puedes probar lo que propone Microsoft:
http://support.microsoft.com/kb/211736
Saludos
Hola Enrique:
Una vez mas volvemos a encontrrarnos aqui, tratando de ganar la pelea, (aunque no la batalla... porque quedarn otras muchas peleas... :) ) a la ignorancia...
Gracias Enrique por tu aportación, que me pone "los dientes afilados" para aplicarlo a mi proyecto concreto. De momento, tu respuesta, es reto para mi. Voy a trabajarlo para ver lo que da de si...
Con los resultados, buenos o malos, que consiga, volvere a hacerme presente en el foro.
Saludos cordiales.
Hola Cron:
Tu aporte me ha parecido muy interesante, aunque te digo lo mismo que le he respondido a Xoan... Necesito tiempo para analizarlo y tratar de entenderlo para que encaje en mi proyecto. Evidentemente que este empeño en concreto de la barra de progreso no significa ningún cambio funcional importante en el programa... pero es una manera de decirle al usuario, que tenga una cierta paciencia... porque el programa esta trabajando.
Muchas gracias amigo Cron. Saludos cordiales.
Claro que es solo un aspecto "estético".
A mí no se me había ocurrido hasta que vi este hilo, y buscando encontré lo que te he puesto. Lo apliqué a la hoja en la que estaba trabajando y creo que es una mejora significativa, porque las instrucciones que le he dado al cliente son "dejar el programa corriendo por la noche". Es lo que tiene trabajar con 180.000 filas de datos y 17 columnas.
La ventaja del sistema es que es muy sencillo y que utiliza controles propios de Excel, por lo que no tienes que llamar a librerías externas que pueden estar o no en el ordenador del cliente.
Un saludo
Lleva un ejemplo incorporado, así que es usar y listo..., sólo tendrías que definir la longitud del salto.
Para cualquier duda, no dudes en preguntar.
El método propuesto por Cron no ha superado pasar a 1000 filas y 250 columnas, debido a que hay varias definiciones de Integer, aunque, al pasarlas a Long me sigue dando desbordamiento. De todas formas, para mi implica cargar un nuevo formulario y prefiero no usarlo (me lío bastante con los formularios, y prefiero intentar otras opciones más simples) -es un trauma personal :))-.
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Quiero agradecer tanto a Cron como a Xoan Ninguen las aportaciones recibidas al tema presente, de la barra de control...
Estoy poniendo en el Foro, un ejemplo que recoge las aportaciones recibidas, aplicadas a un pequeño programa que rellena cada celda de 256 columnas y 3000 filas con números aleatorios.
El proceso en si, le lleva a Excel algo así como medio minuto, tiempo que "parece una eternidad" si es que no hay ninguna barra que muestre el "status" del proceso. Esto se puede ver en el ejmplo ejecutando el primero de los cuatro botones.
El segundo botón ejecuta el mismo proceso y muestra el "progreso" en una barra, siguiendo la sugerencia recibida de Cron...
El tercer botón ejecuta el mismo proceso y muestra el "progreso", en este caso, utilizando la ProgressBar 6.0 de Microsoft.
El cuarto botón ejecuta el mismo proceso, mostrando el "progreso" en la barra de estado de Excel, siguiendo la sugerencia recibida de Xoan Ninguen.
En los tres casos ofrecidos, la aplicación es sencilla, para cualquier otro supuesto.
En los macros se pueden ver la manera de aplicarlos.
De todas maneras, faltaria más... estoy a disposición del que tenga dudas sobre el tema... (y yo sepa responder...)
Una vez más, no me queda más que agradecer las respuestas recibidas que nos ayudan a aprender un poco más, ese pequeño porcentaje de las posibilidades del Excel que conseguimos utilizar...
Agradecido.
Ya por curiosidad...
¿por qué me da error desconocido en compliación?
¿Me faltará alguna librería?
Había pensado que podía ser algo relacionado con Option explicit y las variables, pero no parece...
Saludos
Hola Cron:
No sé a qué te refieres con eso de que te da error desconocido en compilación...
Me gustaría que aclararas en qué situación te sale ese mensaje de error... si al ejecutar el fichero que yo envié... o al activar alguna de las opciones que incluye...
Es decir... primero: puedes abrir el fichero? y segundo: el mensaje surge al escoger alguna de las cuatro opciones...?
Desde luego, tanto el fichero que yo puse en el foro, del que guardo copia, como el que está en el foro realmente, (lo he vuelto a bajar desde el foro...) a mi me funcionan sin problema.
De todas maneras quiero aclarar, que el fichero lo he he creado con Excel 2003, pero lo he ejecutado tambien desde Excel 2007 sin ningun problema.
Saludos cordiales.
Al abrirse da el error siguiente:
Microsoft Visual Basic
Error del sistema &H80004005 (-2147467259). Error no especificado
Acepto y se abre, pero al ejecutar cualquier opción, en compilación da el siguiente error:
Microsoft Visual Basic
Error de Automatización
Error no especificado
Le he dado algunas vueltas y no localizo el error, pero es probable que sea por alguna librería no cargada en mi ordenador y que el tuyo sí la tiene instalada. O al revés, algo que tenga yo instalado que interfiera.
Saludos
Hola Cron:
No tengo idea sobre todo esto... pero parece como que tu configuración del Excel tiene algún complemento que "choca"... aunque supongo que esta situación que reportas, solo se está produciendo con el fichero que yo he enviado... y habitualmente te funciona sin problemas...
Por hacer una prueba sencilla que no quede...
En Herramientas->Complementos trata de desactivar los complementos que tengas activos... especialmente el de Herramientas para el Euro... y haz la prueba... Si no cambia nada, vuelves a dejarlo como estaba...
De todas maneras, no se si en la situación actual, puedes ver el contenido de los macros... para intentar copiarlos y crearte, si te interesa, otro fichero, desde cero...
Si no los puedes ver... te podría estar enviando los macros preparados para que los "montes" en una hoja que te crees...
De todas maneras espero que resuelvas la situación... que parece un conflicto entre complementos...
Saludos cordiales.
El complemento para el euro lo tengo desactivado.
Tengo el complemento de pdf, que puede ser el que choque. En cualquier caso, cuando los de Telefónica quieran resolver el problema de SU central y me dejen tener línea de nuevo (llevo ya 3 días sin teléfono fijo, ergo sin internet) lo probaré en el Excel 2010 sin complementos, a ver qué pasa.
Y efectivamente, el problema únicamente me lo ha dado con este archivo. Seguiré investigando.
Saludos
Hola Cron:
Ojala que puedas resolverlo...
Se me ha ocurrido, como ayuda para localizar la causa del posible "conflicto" enviarte cuatro ficheros.
El primero Ejemplo_barra_o.xls contiene sencillamente la rutina para generar los números aleatorios sin ninguna barra de progreso.
El segundo, Ejemplo_barra_1.xls hace lo mismo pero con la barra que tú sugerías.
El tercero, Ejemplo_barra2.xls hace lo mismo con la ProgressBar de MicrosoftBarra 6.0 de Microsoft.
El cuarto, Ejemplo_barra3.xls hace lo mismo con la barra en barra de estado de Excel sugerida por Xoan Ninguen.
Que tengas suerte y a ver si puedes cargar sin problemas alguno de esos ficheros. Y luego a analizar el comportamiento.
Saludos cordiales.
Sirve para acotar el problema. Solo me ocurre con la barra 2, es decir, con el ProgressBar de Microsoft.
Me debe faltar la librería donde la identifica.
Creo que es interesante, porque eso implica que no es una buena solución para utilizar en hojas que van a ser usadas en varios ordenadores, o en ordenadores diferentes a donde se programó.
En su defecto, el uso de la hoja requeriría una instalación previa de la librería externa que utiliza.
Añado: parece que la barra viene de VB6, lo que implica que sí que se necesita tener instalada la librería, sin ninguna duda. Seguramente tú tienes instalado el Visual Basic o el Visual Studio y yo no, por eso tú tienes la librería instalada y yo debería instalarla aparte.
Un saludo
Hola Cron:
Me alegro de que se acotara el problema y quedara claro que esta vinculado a la ProgressBar 6.0 de Microsoft.
Ya habia podido constatar esto mismo en un ordenador donde descubri que daba el mismo problema.
En mi ordenador y en otros dos ordenadores mas donde he podido comprobar que funciona sin problema, no esta previamente instalado ni el Visual basic ni el Visual Studio.
Pero expongo en el foro las observaciones que he podido realizar, por si alguien puede encontrar alguna pista...
En el ordenador donde falla el ProgressBar 6.0 de Microsoft, hice lo siguiente:
Abri una hoja nueva de Excel, y le añadi un UserForm...
En el cuadro de herramientas del UserForm, añadi un control nuevo... escogiendo de la lista, el ProgressBar 6.0 de Microsoft.
En apariencia, lo añade... pero no... Aunque crea un icono en el cuadro de herramientas del UserForm, al pasar el cursor por encima de este icono, en lugar de mostrar el nombre del control "ProgressBar 6.0" muestra "desconocido"... y por supuesto no se puede poner ese control en el UserForm.
Me falta comprobar si en este ordenador, existe el fichero MSCOMCTL.OCX en la carpeta System32, que parece que lo necesita... pero no he podido todavia hacer esa comprobacion. Desde luefo, en los tres odenadores donde funciona la ProgressBar, existe ese fichero en el System32...
Otra posibilidad que no descarto, es que el problema tenga algo que ver con los Service Pack o actualizaciones del Windows XP que es con el que trabajo en todos los casos...
Y desde luego, estoy de acuerdo contigo, Cron, en que mientras no tengamos una idea clara de la causa y de la solucion de l problema, es mejor descartar la utilizacion de este control si es que la aplicacion va a ser utilizada por muchos usuarios diferentes.
Saludos cordiales
muy buen apaortacion,como podria usar el ejemlo barra 2 para que la barra apareciera al ejecutarse mi codigo ,mi codigo es distinto al del ejemplo
quiero ejecutar mi codigo usando la barra de progreso, como agrego mi codigo?
saludos....
Disculpa la molestia, pero me he roto la cabeza con tanto tutorial que encuentro en internet y no consigo resolver mi problema.
Tengo 3 macros, se deben ejecutar en orden, ya que cada uno cumple una función dentro del programa, pero no se como colocar la progressbar para q se ejecute según el tiempo que le toma a cada macro ejecutarse, es decir; el código de trabajo ya está colocado, lo q deseo es q mi barra de progreso se ejecute al tiempo con cada macro (independiente)??? Estoy usando la PROGRESS BAR nativa del VB.
Ayuda por favor!!! Espero q me haya hecho explicar bien :)