Código para proteger todas la hoja a la vez y no interferir con las macros.

01/11/2006 - 21:56 por ~ jose ~ | Informe spam
Hola, que tal?

Necesito un código para proteger todas las hojas de un libro con la
misma contrase#a y que al ejecutar las macros no tenga que incluir en
cada una de ellas el código para desproteger la hoja y al terminar la
macro poner otro código para protegerla.

Estoy probando este código en el el módulo del libro:

Private Sub Workbook_Open()
For Each ws In Worksheets
ws.Protect Password:="clave", userinterfaceonly:True
Next ws
End Sub

pero al ejecutar esta macro (de la 'hoja5') me dá error, se me detiene
en el la parte que os marco:

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveWindow.FreezePanes = False
Range("B:D,G:L,N:W").EntireColumn.Hidden = False
[b10].CurrentRegion.EntireRow.Delete

' DESDE AQUI ME DA EL ERROR
Sheets("Almacén").UsedRange.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Almacén").[T1:T2], _
CopyToRange:=[b10], _
Unique:=False
' HASTA AQUI ME DA EL ERROR

' aqui sigue mas código

Si es mejor proteger todas la hojas una por una manualmente no me
importa, lo más importante es que pueda ejecutar cualquier código con
la hoja protegida.

Si os hace falta algún dato más...
Venga, gracias, un saludo
jose
 

Leer las respuestas

#1 Héctor Miguel
02/11/2006 - 01:19 | Informe spam
hola, jose !

Necesito un codigo para proteger todas las hojas de un libro con la misma contrase#a
y que al ejecutar las macros no tenga que incluir en cada una de ellas el codigo para desproteger la hoja
y al terminar la macro poner otro codigo para protegerla.



1) en la seccion de codigo que expones, no se alcanza a apreciar alguna causa posible de erro/des/re/proteccion de hojas -?-
salvo [supongo al copiar/pegar a la consulta] la instruccion en el evento '_open' con el 'userinterfaceonly:True'
-> donde le hace falta el signo '=' -> UserInterfaceOnly:=True

2) la posible 'des-proteccion' de una hoja [despues del evento '_open'] podria ocurrir...
[hasta donde se]... SOLO si se insertan filas/columnas nuevas nuevas en la hoja 'protegida' -?-

3) no se alcanza a apreciar cual es el sentido de la instruccion: -> Application.EnableEvents = False
en el evento '_activate' de la hoja donde se presenta el error -???-

4) [preguntas]:
- si dejaras la hoja 'desprotegida'... el codigo ya no te mandaria el error que mencionas -???-
- que mandaste a la basura con la instruccion: -> [b10].CurrentRegion.EntireRow.Delete -???-
- de cuantas columnas estamos hablando en la parte que dice: -> Sheets("Almacen").UsedRange.AdvancedFilter -???-
[es probable que necesites de un '.Resize' para depositar los resultados en: -> CopyToRange:=[b10].RESIZE(...) -???-

comentas [si hubiera] algun detalle mas... 'descriptivo' ?
saludos,
hector.

__ el resto de la consulta __
Estoy probando este codigo en el el modulo del libro:
Private Sub Workbook_Open()
For Each ws In Worksheets
ws.Protect Password:="clave", userinterfaceonly:True
Next ws
End Sub
pero al ejecutar esta macro (de la 'hoja5') me dá error, se me detiene en el la parte que os marco:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveWindow.FreezePanes = False
Range("B:D,G:L,N:W").EntireColumn.Hidden = False
[b10].CurrentRegion.EntireRow.Delete
' DESDE AQUI ME DA EL ERROR
Sheets("Almacen").UsedRange.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Almacen").[T1:T2], _
CopyToRange:=[b10], _
Unique:=False
' HASTA AQUI ME DA EL ERROR
' aqui sigue mas codigo
Si es mejor proteger todas la hojas una por una manualmente no me importa
lo mas importante es que pueda ejecutar cualquier codigo con la hoja protegida...

Preguntas similares