Compartir a través de

proteger una hoja de excel que usa macros(para ocultar celdas a traves de filtros)

Anónimas
2010-01-19T19:16:01+00:00

buenas tardes, estoy haciendo una hoja con las siguientes caracteristicas; le hice unas macros que programe en botones cuya finalidad es aplicar filtros, estas macros funcionan bien, sin embargo quiero proteger la hoja con una contraseña para que no modifiquen su contenido, ya seleccione el rango que deseo que utilice el autofiltro (segun yo por que las macros que programe lo que hacer en aplicar ciertos filtros) sin embargo al momento de proteger la hoja las macros no funcionan argumentando que la hoja esta protegido, como puedo resolver esto

gracias por su atención

Saludos

Microsoft 365 y Office | Instalación, canjeo, activación | Para la casa | Otros

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios
Respuesta aceptada por el autor de la pregunta
  1. Héctor Miguel 71,595 Puntos de reputación
    2010-01-23T01:26:52+00:00

    hola, Waldemar !

    para iniciarte en la programacion VBA-excel, creo esta es una buena oportunidad:

    • abre el editor de vba (atajo de teclado: Alt + F11)
    • muestra el explorador de proyectos (si no esta visible: Ctrl + R, o menu: Ver / Explorador de proyectos)
    • haz un doble-clic en el objeto "ThisWorkbook"
    • en la ventana (grande a la derecha) que se despliegue es donde ira el codigo sugerido

    => utiliza la opcion b) si estas trabajando con excel superior a 97-2000

    saludos,

    hector.

    2 personas han encontrado útil esta respuesta.
    0 comentarios No hay comentarios

4 respuestas adicionales

Ordenar por: Muy útil
  1. Anónimas
    2012-05-16T01:59:19+00:00

    oye tengo una pregunta sobre la terce opcion que pusiste es k mis macros insetan filas y ocultan fila k puedo hacer ???

    hola, Waldear !

    prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:

    -> la proteccion a solo la interfase con el usuario

    -> el permiso para usar los autofiltros (y esquemas) los cuales YA deberan estar presentes en tu hoja

    segun las versiones a las que tengas pensado dar "soporte" para el uso de tu archivo

    (recuerda que el uso de caracteristicas nuevas no tienen soporte en las versiones anteriores)...

    a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):

    Private Sub Workbook_Open()

      With Worksheets("Hoja1")

        .Protect UserInterfaceOnly:=True

        .EnableAutoFilter = True

      End With

    End Sub

    b) a partir de excel 2002/xp SI es requisito repetir el password:

    Private Sub Workbook_Open()

      With Worksheets("Hoja1")

        .Protect _

          PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _

          UserInterfaceOnly:=True

        .EnableAutoFilter = True

      End With

    End Sub

    (practicamente) TODO lo que hagas por codigo... pasara sin problemas

    (excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)

    OJO: si llegaras a necesitar que el usuario defina sobre que listado aplica los autofiltros...

            copia/pega las siguientes lineas en un modulo de codigo 'general' y asignas la macro a algun boton/atajo/...

    Option Private Module

    Sub AutoFiltrosPorMacro()

      With ActiveCell.CurrentRegion

        If .Count > 1 Then

          If .Parent.AutoFilterMode Then

            If .Parent.AutoFilter.Range.Address <> .Address Then .AutoFilter

          End If

          .AutoFilter

        Else

          MsgBox """Activa"" por favor (alg)una celda" & vbCr & _

                        """dentro"" (o... ""cerca"") de la lista ""a filtrar"".", _

                        vbInformation, "AutoFiltros por macros"

        End If

      End With

    End Sub

    si cualquier duda (o informacion adicional)... comentas ?

    saludos,

    hector.

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  2. Héctor Miguel 71,595 Puntos de reputación
    2010-01-20T06:20:06+00:00

    hola, Waldear !

    prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:

    -> la proteccion a solo la interfase con el usuario

    -> el permiso para usar los autofiltros (y esquemas) los cuales YA deberan estar presentes en tu hoja

    segun las versiones a las que tengas pensado dar "soporte" para el uso de tu archivo

    (recuerda que el uso de caracteristicas nuevas no tienen soporte en las versiones anteriores)...

    a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):

    Private Sub Workbook_Open()

      With Worksheets("Hoja1")

        .Protect UserInterfaceOnly:=True

        .EnableAutoFilter = True

      End With

    End Sub

    b) a partir de excel 2002/xp SI es requisito repetir el password:

    Private Sub Workbook_Open()

      With Worksheets("Hoja1")

        .Protect _

          PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _

          UserInterfaceOnly:=True

        .EnableAutoFilter = True

      End With

    End Sub

    (practicamente) TODO lo que hagas por codigo... pasara sin problemas

    (excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas y objetos incrustados)

    OJO: si llegaras a necesitar que el usuario defina sobre que listado aplica los autofiltros...

            copia/pega las siguientes lineas en un modulo de codigo 'general' y asignas la macro a algun boton/atajo/...

    Option Private Module

    Sub AutoFiltrosPorMacro()

      With ActiveCell.CurrentRegion

        If .Count > 1 Then

          If .Parent.AutoFilterMode Then

            If .Parent.AutoFilter.Range.Address <> .Address Then .AutoFilter

          End If

          .AutoFilter

        Else

          MsgBox """Activa"" por favor (alg)una celda" & vbCr & _

                        """dentro"" (o... ""cerca"") de la lista ""a filtrar"".", _

                        vbInformation, "AutoFiltros por macros"

        End If

      End With

    End Sub

    si cualquier duda (o informacion adicional)... comentas ?

    saludos,

    hector.

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  3. Anónimas
    2010-01-25T15:30:49+00:00

    muchas gracias!!!

    funciono tu codigo y gracias por la lección de VBA-excel!!!

    0 comentarios No hay comentarios
  4. Anónimas
    2010-01-21T18:19:48+00:00

    que tal Hector hasta ahora pude checar mi computadora, agradezco tus comentarios asi como solciitarte que me ampliaras tus comentarios en relacion a los que escribiste de:

    prueba a (re)proteger la hoja en el evento '_open' de tu libro (una sola vez en la sesion) estableciendo dos caracteristicas:

    -> la proteccion a solo la interfase con el usuario

    lamentablemente no he utilizado mucho la programación y desconozco donde y como haria estos cambios

    asi como tambien este comentario de:

    a) en excel 97 y 2000 NO necesitas repetir el password (es suficiente con poner):

    Private Sub Workbook_Open()

      With Worksheets("Hoja1")

        .Protect UserInterfaceOnly:=True

        .EnableAutoFilter = True

      End With

    End Sub

    no se donde hacerlo y te comento que estoy utilizando la version 2007 de excel

    Agradezco tu atención

    Saludos

    Waldemar

    0 comentarios No hay comentarios