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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 VIC
15/03/2009 - 20:09 | Informe spam
Gracias Héctor.
Funciona a medias, si está protegida la hoja funciona perfectamente, pero si
están ocultas las pestañas hay algún remedio?
Gracias.



"Héctor Miguel" escribió en el mensaje de
noticias:#
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.

Respuesta Responder a este mensaje
#3 Héctor Miguel
15/03/2009 - 23:49 | Informe spam
hola, victor !

Funciona a medias



=> y que significa (exactamente) "a medias" -?????-

si esta protegida la hoja funciona perfectamente
pero si estan ocultas las pestanas hay algun remedio?



=> algun "remedio" ???
como para corregir... "que" (exactamente) ???

me da la impresion de que en tu macro tienes instrucciones del tipo:
worksheets("hoja oculta").select (o .activate) lo cual NO es posible
(considerando que no puedes "select"(ionar) objetos NO visibles) -?-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida