Cuando el modelo es complejo, con muchas hojas ocultas, los métodos tradicionales de Excel (a través del menú contextual de la hoja o cambiando la propiedad en el editor de Vb) consumen mucho tiempo. Si bien podemos ocultar un grupo de hojas seleccionándolas con Ctrl, para mostrarlas tendremos que hacerlo una por una. Lo mismo con la propiedad VeryHidden .
Para agilizar mi tarea he desarrollado un complemento que permite:
- Elegir una o más hojas y convertirlas en invisibles
- Elegir una o más hojas y volverlas visibles
- Volver todas las hojas del cuaderno visibles
Para que la macro pueda aplicarse a todo cuaderno activo podemos copiar el código en el cuaderno Personal o instalarlo como complemento (complementos (Add-Ins) son elementos que permiten extender las capacidades de Excel).
Una vez instalado, el código funciona de esta manera en este cuaderno con seis hojas de las cuales tres están ocultas
Para instalar el código en el libro Personal, hay que descargar este archivo, abrir el editor de Vba (Alt + F11) y copiar los códigos y el formulario (se puede hacer arrastrando los elementos con el mouse como puede verse en la animación)
Después de abrir el cuaderno “Manejo de hojas.xlsm”, hay que activar el editor de Vba copiar/arrastrar los elementos como se muestra en la animación
Una vez instalado en el Personal podemos crear una icono en la barra de acceso rápido para activar la macro cómodamente como se muestra en este video o usar el atajo de teclado (Ctrl+Mayúsculas+A)
Otra posibilidad es instalar el complemento para lo cual hay que descargar este archivo. Una vez descargado existen dos posibilidades:
- Guardarlo en la carpeta de complementos de Excel (por lo general será C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns) , lo cual hará que automáticamente aparezca en el formulario de los complementos
- Guardarlo en alguna otra carpeta y usar el botón “Examinar” para localizar el archivo
Una vez instalado el complemento (señalando la casilla al lado del nombre), podemos usarlo con el atajo de teclado o crear un icono en la barra de acceso rápido con la misma técnica mostrada anteriormente.
Las descargas de los archivos son gratuitas. También se puede acceder a la hoja de descarga aquí.
Acutalización (13/06/2013): los archivos han sido modificados para el caso en que el cuaderno activo esté protegido. Cuadernos protegidos, a diferencia de hojas protegidas, no permiten cambiar la estrucutura del cuaderno y por lo tanto no se puede mostrar hojas ocultas.
Gracias, muy interesante. Solo que no se porque cada vez que lo ejecuto, desde el icono de la barra de herramientas de aacceso rapido, tambien me abre el archivo "manejo de hojas"... Como hago para que esto no suceda?
ResponderBorrarGracias de nuevo
Tal vea no lo haya señalado con suficiente claridad en la nota; no hay que correr la macro desde el cuaderno "manejo...xlsm" sino copiar el código y el userform al Personal.xlsb (o Personal.xls, depdiendo de la versión de Excel).
ResponderBorrarO descargar el compemento (manejo...xlam) e instalarlo como muestro en la nota.
Excelente complemento, funciona de maravilla.
ResponderBorrarFelicitaciones por el blog.
Jean
Muchas gracias, excelente.
ResponderBorrarAñadir que la trayectoria en W8 con sistema y Office en español es:
C:\Users\usuario\AppData\Roaming\Microsoft\Complementos
Justo lo que buscaba, voy a intentarlo. Sabes si me respetara la contraseña de las hojas? Me interesa mantenerla para que solo yo pueda mostrar las hojas. Muchas gracias!
ResponderBorrarSaludos y enhorabuena por el blog, muy didáctico
No, la protección de las hojas no impide que estas pueden ser ocultadas o descubiertas. Para impedirlo hay que aplicar protección al libro.
ResponderBorrarSi aplicas protección al libro hay que agregar algunas sentencias al código para desprotegerlo y volver a protegerlo.
En el código del botón Aceptar (Private Sub cbtOK_Click()) inmediatamente después de
Application.ScreenUpdating = False
agregas
ActiveWorkbook.Unprotect "contraseña"
y antes de Unload ufSheetsSelect, agregas
ActiveWorkbook.Protect "contraseña"
Gracias de nuevo Jorge. Alguna posibilidad de hacerlo desde el archivo que nos descargamos como complemento? Me lo he instalado así y funciona, pero efectivamente, si protejo el libro aparece "se ha producido un error 1004 en tiempo de ejecución: no se puede asignar la propiedad visible de la clase Worksheet"
ResponderBorrarMe recomiendas copiar el diálogo en el cuaderno personal con los cambios comentados mejor, o puedo "modificar" el complemento de alguna forma?
Gracias¡¡¡¡¡¡¡¡
Jorge, lo he conseguido, gracias, muchas muchas gracias.
ResponderBorrarJorge,
ResponderBorrarestaba por decirte que te fijes en mi comentario del 2 de marzo.
COMPLEMENTO PARA MOSTRAR HOJAS
ResponderBorrarGracias por tu valiosa asesoría. Sigo intentando mostrar hojas ocultas de Excel. Instale la Macro descrita en tu blog y la misma corre hasta trasladar las paginas no visibles a visibles, pero aquí me da el siguiente mensaje:
“Se ha producido el error 1004 en tiempo de ejecución: No se puede asignar la propiedad Visible de la clase Worksheet” y me marca con amarillo el siguiente texto de la macro:
ActiveWorkbook.Sheets(.List(iSh)).Visible = xlSheetVisible
Parece ser que el cuaderno está protegido. Fijate en mi comentario del 2 de marzo.
ResponderBorrarCOMPLEMENTO PARA MOSTRAR HOJAS
ResponderBorrarNuevamente gracias por tu ayuda. Probé a correr la macro agregando el texto de tus comenetarios del 2 de marzo y aun no se logra mostrar las paginas ocultas por tener contraseña. La macro SI FUNCIONA en otros libros no protegidos. Que deberia hacer para quitar la contraseña y mostrar las hojas en forma simultanea.
Hola Daniel, el hecho que una hoja esté protegida con contraseña no impide que se pueda ocultar o mostrar. Lo único que impide mostrar u ocultar hojas es que el cuaderno esté protegido lo que impide cambiar su estructura.
ResponderBorrarPara quitar la protección de las hojas en el código hay que modificar el código del evento Private Sub cbtOK_Click() poniendo la sentencia
ActiveWorkbook.Sheets(.List(iSh)).Unprotect "contraseña"
antes de
ActiveWorkbook.Sheets(.List(iSh)).Visible = xlSheetVisible
y la sentencia
ActiveWorkbook.Sheets(.List(iSh)).Protect "contraseña"
después.
Pero, como te señalo más arriba, esto es innecesario. Te sugiero que me mandes el archivo para que pueda ver cuál es el problema.
Simplemente genial, muchas gracias!!
ResponderBorrarEstimado Jorge, seguramente puedas indicarme un link o una solución a esta duda. Instalé un complemento (viene protegido) que cuenta con varias funciones. ¿Cuál sería la instrucción VBA para ejecutar una de estas funciones? Intenté realizar los pasos manualmente con la grabadora encendida pero no se guardó ninguna instrucción. Muchas gracias por tu atención.
ResponderBorrarLuis Eduardo, no me queda claro. ¿La idea es ver el código de las funciones incluidas en el complemento? Para eso tendrías que conseguir la clave para desproteger el complemento o pedirle el código al autor. La grabadora graba las acciones que hacés vos, no el código que corre.
ResponderBorrarGracias por atender mi consulta. No, no deseo conocer el código. Al instalar el complemento se me colocó una nueva ficha y dentro de ella varios grupos u opciones. Quisiera ejecutar 1 de esa funciones, pero si la ejecuto con la grabadora de macros no me aparece ninguna instrucción grabada. Y no se cómo llamar con Application.Run a la función que necesito.
ResponderBorrarSi quieres usar una función de un complemento en tu código primero tienes que crear una referencia en el editor de Vb.
ResponderBorrarFijate en esta nota (en inglés).
¿Podría enviarte el complemento o imágenes para que observes cómo se ven las referencias? Aparece como VBA Proyect (nada mas) y en 'Ubicación' si compruebo que se trata del complemento.... pero con ese nombre, cuando lo tildo aparece el mensaje de error: 'El nombre entra en conflicto con un módulo, etc' Comentame si puedo enviarte el complemento. Gracias por tu atención.
ResponderBorrarLuis Eduardo, te sugiero que consultes en alguno de los foros de Vba.
ResponderBorrarEsto se publico el 60/02/13:
ResponderBorrarTal vea no lo haya señalado con suficiente claridad en la nota; no hay que correr la macro desde el cuaderno "manejo...xlsm" sino copiar el código y el userform al Personal.xlsb (o Personal.xls, depdiendo de la versión de Excel).
O descargar el compemento (manejo...xlam) e instalarlo como muestro en la nota.
No consiguo hacerlo; serias tan amable de "explicarlo mejor. Mil GRACIAS anticipadas
¿Qué es lo que no conseguís hacer? Te sugiero ver esta nota en caso que no veas o no exista el cuaderno Personal.
ResponderBorrarEn esta otra nota podés ver cómo instalar un complemento (casi al final del post donde empieza el párrafo;"Para instalar el complemento usamos el menú..."). En el post muestro c[omo hacerlo en Excel 97-2003. EL proceso en Excel 2007-2013 es el mismo pero usando el menú Programador-Complementos.