Ayuda con protecciones

08/01/2008 - 20:24 por Miguel | Informe spam
Tengo un libro, con nueve hojas, denominadas: ("Inicio",
"Formulario", "Estadistica", "Tabla", "Gráfico", "Estadistica_1",
"Tabla_1", "Gráfico_1" y "Listas").
En la hoja "Inicio", hay un objeto, a modo de índice, con
hipervínculos al resto de las hojas.
La hoja "Formulario", se utiliza como formulario, a través de un
UserForm, cuyos registros se copian mediante la opción registrar
(CommandButton1), por medio de códigos VBA, en las hojas "Estadistica"
o "Estadistica_1", dependiendo de los datos introducidos.
Las hojas "Tabla" y "Tabla_1", son tablas dinámicas de los datos
contenidos en "Estaditica" y "Estadistica_1", respectivamente; al
igual que las hojas "Gráfico" y "Gráfico_1".
Varias personas utilizan este libro para introducir los registros, a
través de su Formulario, el problema es que, a veces "cacharrean" por
las hojas y el código VBA y lo modifican/estropean/etc. De momento he
puesto a salvo la macro, creo, protegiéndola con una contraseña, por
medio de Herramientas->Propiedades->Protección, del Editor de Visual
Basic.
Lo que necesitaría sería proteger el resto de la hojas, mediante
código VBA, para que se encuentren siempre portegidas y, únicamente,
se desprotejan de forma automatica cuando se registren los datos desde
el Formulario; ya que, si lo hago desde las propias hojas, no me deja
registrar los datos.
Si necesitáis el código que utilizo, me lo decís y os lo envío.
Muchas graciasUn saludo,
Miguel A.
 

Leer las respuestas

#1 De_Corando.
09/01/2008 - 01:48 | Informe spam
Hola, Miguel.
Haber si te puedo ayudar mientras llega tu tocayo Hector Miguel que es
experto en la materia.

En el codigo o codigos que utilizas para hacer cargar el UserFrom
deberas insertar las siguientes funciones:
Al iniciar el codigo, despues de Sub y Nombre del Userform:
1.- ActiveSheet.UnProtect Password:="La asignada"

y este al finalizar el codigo: antes del Sun End
2.- ActiveSheet.Protect Password:="La asignada" '
DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True

mas o menos de la siguiente manera:

Sub NvoRegistro_Click()
ActiveSheet.Unprotect Password:="La asignada por ti" ' <<--
Codigo buscado
Load REGISTRAR <<<<-- ("Nombre" del UserForm)
REGISTRAR.Show
ActiveSheet.Protect Password:="La asignada por ti" '
DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Sub

Recuerda lo importante es agregar: " ActiveSheet.Unprotect ... " y
"... Protect" en cada parte donde tenga que registrar y/o abrir una
hoja. con su respectivo contraseña o password.

Espero te sirva, mientras que Hector Mguel tenga la mejor opcion.
esperamos comentarios.

Preguntas similares