Macro y protección de hoja

14/03/2009 - 22:48 por VIC | Informe spam
Hola amigos.
De nuevo se me plantea una cuestión difícil para mi.
Se trata de saber cómo puedo, desde el código ignorar la protección de una
hoja y la ocultación de la misma.
Me explicaré mejor:

En una hoja llamada "Socios" introduzco los datos correspondientes a los
socios del club.
En la hoja2 llamada "Ficha" he formado una ficha gráfica con los datos de
los socios para imprimirse.
En la hoja "Socios" tengo una macro que me imprime la "Ficha"
correspondiente al socio que selecciono.

Problema:
Como la "Ficha" está protegida y oculta, la macro no me funciona.
 

Leer las respuestas

#1 Héctor Miguel
15/03/2009 - 01:10 | Informe spam
hola, victor !

... como puedo, desde el codigo ignorar la proteccion de una hoja y la ocultacion de la misma...
... hoja... "Socios" introduzco los datos correspondientes a los socios del club.
... hoja2... "Ficha" he formado una ficha grafica con los datos de los socios para imprimirse.
... hoja "Socios" tengo una macro que me imprime la "Ficha" correspondiente al socio que selecciono.
... Como la "Ficha" esta protegida y oculta, la macro no me funciona.



1) para poder imprimir (lo que sea), es necesario "ponerlo" en una area "visible" (p.e. en la ventana de la aplicacion)
si tu hoja esta oculta, deberas primero "mostrarla" (luego de imprimirla puedes ocultarla de nuevo)

2) para el caso de las otras acciones que pudiera hacer tu macro con la hoja protegida y oculta...
prueba a proteger la hoja en el evento '_open' del ThisWorkbook
con la opcion de proteger solo la interfaz con el usuario +/- asi...

a) en excel 97 y 2000 NO necesitas repetir el password, es suficiente con poner:
Private Sub Workbook_Open()
Worksheets("hoja1").Protect UserInterfaceOnly:=True
End Sub

b) a partir de excel 2002 [xp] SI es requisito repetir el password
Private Sub Workbook_Open()
Worksheets("hoja1").Protect _
PassWord:="la MISMA cOntRaSe#a qUe lE pUsISte", _
UserInterfaceOnly:=True
End Sub

c) si se trata de varias hojas (suponiendo una misma clave para todas)...
Private Sub Workbook_Open()
Dim Hoja As Worksheet
For Each Hoja In Worksheets(Array("hoja1", "hoja4", "hoja6"))
Hoja.Protect PassWord:="123", UserInterfaceOnly:=True
Next
End Sub

(practicamente todo) lo que hagas por codigo... pasara sin problemas
excepto ciertas cosillas relacionadas con ordenaciones, insertar filas/columnas, objetos incrustados...
(y algunas mas que requeriran de otro tipo de administraciones)

saludos,
hector.

Preguntas similares