Como usar controles activex con planilla protegida?

19/10/2009 - 16:51 por Robert Blanco | Informe spam
Agregué un Calendario (Control ActiveX) en mi planilla. Luego protejo
ciertas celdas para evitar su modificación.
Pero el problema es que la protección también me impide usar el
calendario.
Mi pregunta: Cómo hago para poder usar mi calendario a pesar de tener
protegida la planilla?

A pesar que dispongo de éste código:

Private Sub Calendar1_Click()
ActiveSheet.Unprotect "clave"
[B1] = Calendar1.Value
ActiveSheet.Protect "clave"
End Sub

Tiene el problema que al darle click sobre las casillas donde haya un
número de día, emerge la ventana de excel que avisa que la hoja está
protegida. Luego de cerrar la ventana emergente, al darle click en
alguna región del calendario donde no haya ningun número de día (por
ejemplo en la zona de los nombres de los dias o donde se muestra el
mes y el año), recién se carga la fecha en la celda B1. Se podría
evitar que emerga la ventana?
Muchas gracias por su ayuda,
 

Leer las respuestas

#1 Héctor Miguel
21/10/2009 - 03:30 | Informe spam
hola, Robert !

Agregue un Calendario (Control ActiveX) en mi planilla. Luego protejo ciertas celdas para evitar su modificacion.
Pero el problema es que la protección también me impide usar el calendario.
Mi pregunta: Como hago para poder usar mi calendario a pesar de tener protegida la planilla? ...



para el caso de acciones que necesites hacer por macro con la hoja protegida (y oculta ?)...
prueba a (re)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