Macro para proteger libro y hojas con contraseña

Me gustaría saber si es posible que me ayudéis con una macro y me dijeráis si puede hacerse y como. Serían en realidad dos macros y esta es la idea:
Tengo un libro con varias hojas en las que yo voy a ser el "administrador". De esas hojas hay 3 en las que quiero que la gente grabe datos y que solo se muestren esas tres hojas. Quisiera también que los usuarios no puedan grabar nada más que en las celdas que yo habilite y que no puedan mostrar hojas ni manipular fórmulas, pero si poder aplicar filtros.
La idea es proteger todas las hojas con la misma contraseña y ocultar las que no quiero que vean y además proteger el libro para que no puedan ver dichas hojas de ninguna manera. Además cada hoja iría protegida de una manera diferente, alguna con la opción de autofiltro y seleccionar solo las celdas desprotegidas, otras con insertar hipervínculos y otras con modificar objetos.
Tengo el código de una macro en la que te pide introducir una contraseña para proteger todas las hojas a la vez, que me podría servir lo único es que no sé como hacer que la protección de cada hoja sea diferente y que se oculten las que no quiero que se vean. Además con este código suponiendo que se modificara para hacer esto, seguiría existiendo la posibilidad de poder mostrar las hojas que se han ocultado, con lo que además habría que proteger el libro completo.
Este es el código:
__________________________________________________________________
Sub Password_Macro_Proteger()
Entrada = InputBox("Ingrese contraseña para continuar", "PROCESO PROTEGIDO")
If Entrada = "contraseña" Then
ThisWorkbook.Protect "contraseña"
Dim Sheet As Worksheet
For Each Sheet In Worksheets
Sheet.Protect "contraseña"
Next
For Each Sheet In Worksheets
Sheet.EnableSelection = xlUnlockedCells
Next
Else
MsgBox "Acceso Denegado", vbExclamation, "ERROR"
End If
End Sub
______________________________________________________________________
Sub Password_Macro_Desproteger()
Entrada = InputBox("Ingrese contraseña para continuar", "PROCESO PROTEGIDO")
If Entrada = "contraseña" Then
ThisWorkbook.Unprotect "contraseña"
Dim Sheet As Worksheet
For Each Sheet In Worksheets
Sheet.Unprotect "contraseña"
Next
For Each Sheet In Worksheets
Sheet.EnableSelection = xlNoRestrictions
Next
Else
MsgBox "Acceso Denegado", vbExclamation, "ERROR"
End If
End Sub
__________________________________________________________________
Por tanto la macro, salvo que a alguien se le ocurra una idea más práctica, sería, proteger con la misma contraseña cada hoja pero permitiendo diferentes manipulaciones en la protección, ocultar luego las que no quiero que se vean y por último proteger el libro con otra contraseña diferente y todo esto que te lo pida la macro.
Luego habría que hacer otra macro a la inversa, es decir, que nos pida la contraseña para desproteger el libro, que una vez introducida correctamente nos muestre todas las hojas y que nos pida contraseña para desproteger todas las hojas a la vez.

1 Respuesta

Respuesta
1

Si proteges manualmente la hoja con las restricciones para cada una con la grabadora de macros encendida, al detenerla encontraras en un modulo las instrucciones.

De todos modos, la instrucción Protect protegerá la hoja con las restricciones que tenia al momento de desprotegerla... Pero con la macro vas a lo seguro.

Hace unos días envíe un modelo con el paso a paso... ya lo busco y te lo envió en un rato. La idea es:

-El libro tiene solo 1 hoja visible, la portada. Los eventos BeforeClose y BeforeSave ocultan el resto

-En el evento open se solicita pass y según eso de actua.

No valores aun hasta que te envíe el modelo, creo tener tu correo, sino envíame un mail al que aparece en mi sitio.

Sdos!

Hola, gracias por tu respuesta. Me pierdo con los eventos beforeclose y beforsave. Lo que me dices al principio de tu respuesta ya lo tengo grabado en código pero no soy capaz de integrarlo en el módulo que he puesto en mi pregunta de proteger las hojas. Si me das una dirección de correo te mando el archivo en el que quiero usar las macros que ya tiene grabado código con lo de proteger hoja por hoja con lo que quiero y si ya me dices como integrarlo al otro código que he puesto y además si existe forma de proteger el libro con contraseña mediante una macro y desprotegerlo de la misma forma pues te lo agradecería infinitamente. Un saludo y gracias por tu interés.

cibersoft_arg de yahoo.com.ar

Hola te lo acabo de enviar a esta dirección, no se si te habrá llegado:

[email protected]

Si, recibido. En un rato te lo envío. Sdos!

Muuuchas gracias ;-)

Libro enviado... probalo y enviame al correo las posibles variantes que faltan definir.

Sdos!

Hola, estoy probando el libro y me da error al ejecutar la macro desproteger .... no puedo continuar. De todas formas respecto a lo que quiero a ver si puedo explicarme de la forma más simple posible.

Yo soy el "administrador" del libro y yo tengo acceso a todo el libro.

Yo debo poder ejecutar la macro desproteger y mostrar (con contraseña) para manipular todas las hojas menos la principal en la que solo insertaré hipervínculos en la última columna.

Luego debo poder ejecutar la macro proteger y ocultar (con contraseña) para que a la gente que va a grabar datos solo se les muestren las hojas que yo quiera, en este caso adjuntos, hojaamostrar1 y hojaamostrar2. Ellos deben poder grabar y guardar el libro.

Si te das cuenta las macros que están grabadas en mi archivo inicial hacen eso pero sin pedir contraseña y sin proteger las hojas con dicha contraseña.

En realidad no necesito que nada más abrir el libro pida contraseña. Necesito que el libro esté con esas tres hojas que te he comentado nada más abrirlo, que estén protegidas con contraseña y que la opción mostrar y ocultar esté deshabilitidada como cuando un libro está protegido.

La contraseña que debe pedirme al ejecutar las macros es la que protege y desprotege las hojas, nada más.

Sé que es complicado de explicar y yo encima me explico fatal pero creo que en realidad debe ser simple de hacer.

Vuelvo a intentar sintetizar:

1. Parto del libro con todas las hojas desprotegidas y mostradas

2. Ejecuto una macro que protege todas las hojas de diversas formas con la misma contraseña (esta contraseña es la que debe pedirme cuando ejecuto la macro pero para proteger todas las hojas a la vez, no para poder ejecutar la macro) y luego oculta las hojas "principal", "hojauno" y "hojacuatro". Todo en la misma macro. Además protege el libro también con la misma contraseña para que los usuarios no puedan mostrar, ocultar ni manipular el libro.

3. Los usuarios deben poder grabar en ese libro y guardarlo una vez grabados los datos.

4. Una vez se graben los datos por los usuarios, yo debo ejecutar otra macro que me pida contraseña para desproteger el libro y las hojas a la vez y además me muestre todas las hojas.

La forma de proteger cada hoja está incluida en el código de la macro "bloquear_ocultar" de mi archivo.

Gracias por tu paciencia pero me vas a ser de gran ayuda, si consigues resolverlo.

Por ahora para que puedas avanzar quitale el atajo de teclado a la macro que te muestro en la imagen, porque hay 2 con la misma tecla.

Desde menú Programador, Macros, seleccioná la que te indico y desde el botón Opciones borrá la letra. Esa letra le corresponde a la otra de Pass...

Seguí probandolo y luego me comentas si vas a realizar algún cambio de planes a los que me detallaste aquí.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas