lunes, 21 de noviembre de 2011

VBA: una macro en Excel para trabajar en una hoja protegida con el Esquema.

Algunos días atrás, en un comentario un lector preguntaba sobre la posibilidad de trabajar con los Esquemas en una hoja protegida:

...estoy necesitando "utilizar el esquema" en una hoja con protección. ¿Esto es imposible?...


La respuesta que le dí era que no si se trabajaba con el estándar de Excel, pero que sí podría hacerlo si incluía el siguiente código.
Si trabajamos sobre el siguiente ejemplo, donde hemos desarrollado un Esquema:


es fácil comprobar cómo si tenemos nuestra hoja de trabajo protegida, no es posible operar con las herramientas 'Agrupar'/'Desagrupar' o con la de 'Mostrar' u 'Ocultar detalle'...


Sin embargo, mediante el uso de macros podremos saltar este inconveniente. Incluiremos el siguiente código en el Explorador de Proyectos en ThisWorkBook:

Private Sub Workbook_Open()
With Sheets("Hoja1")
.Protect Password:="xxx", UserInterfaceOnly:=True
.EnableOutlining = True
End With
End Sub


Conseguiremos, entonces con este evento Workbook_Open que cada vez que abramos este Libro de trabajo, se proteja la 'Hoja1' con la contraseña 'xxx' y que además con la propiedad UserInterfaceOnly:=True se proteja sólo la interfaz de usuario, pero no las macros.
Por último, la línea de código VBA
WorkSheet.EnableOutlining = True
activa los símbolos de esquema en una hoja de cálculo protegida.


es decir, habilita poder trabajar con el Esquema en nuestras hojas de Excel protegidas.

8 comentarios:

  1. Estimado Excel Foro. Partiendo de su ejemplo del 21/11/2011 vba: "una macro en excel para trabajar en una hoja protegida con el esquema", consulto: quiero proteger una hoja cuyos datos, a modo de formulario, se cargan desde listas de validación. pero al proteger la hoja, la lista de la validación no se despliega y arroja un error. supongo que no se puede usar validación desde hojas protegidas?...habrá algún truco para poder hacerlo...? gracias Leo de Santa Fe

    ResponderEliminar
  2. Hola Leo,
    efectivamente, no es posible en una hoja protegida desplegar elementos de una celda validada, salvo que previamente esas celda la hayas desbloqueado desde le Formato de celdas > Proteger.
    Pruébalo, verás cómo desprotegiéndolo primero sí te lo permite.
    La otra opción es hacer algo similar que lo explicado en este post, cada vez que trabajemos en el rango concreto donde estén las celdas validadas se activaría una macro que desprotege la hoja, e inmediatamente que salimos de esa 'zona' se vuelve a proteger...
    Te recomiendo la primera... más sencilla y más segura.
    Un saludo

    ResponderEliminar
  3. Estimado, como puedo hacer para que desde VBA pueda ocultar el detalle de un grupo. Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola,
      entiendo te refieres a un grupo dentro de una ficha de la cinta de opciones.
      Si es el caso, y trabajas con Excel 2007/2010 el asunto es complicado, ya que grupos y botones del estandar no se pueden modificar...
      al menos hasta donde yo sé.
      Lo siento.

      Suerte!!

      Eliminar
  4. Y si quiero que se protejan todas las hojas del libro y no únicamente la hoja 1?

    ResponderEliminar
    Respuestas
    1. Hola, buenos días!
      Supongo que estarás bien.
      Si quieres proteger todas las hojas del Libro con la misma contraseña (entiendo) podrías hacer:
      Private Sub Workbook_Open()
      For i=1 to worksheets.Count
      With Sheets(i)
      .Protect Password:="xxx", UserInterfaceOnly:=True
      .EnableOutlining = True
      End With
      Next i
      End Sub

      Espero te sirva.
      UN cordial saludo

      Eliminar
  5. Hola buen día. Excelente artículo me podra ayudar un poco con el procedimiento paso a paso para realizar esta acción esque yo no tengo experiencia con macros y creo que aqui se omiten ciertos pasos.Ojala pueda ayudarme.

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola!!
      no creo se omita nada.. esta el paso a paso indicado y con el código completo...incluye una explicación de las dos líneas
      ??
      ;-)

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.