¿Como restrinjo el acceso a hojas de excel con un usuario y un p a.

24/02/2005 - 23:55 por EDUARDO MENDOZA | Informe spam
Como puedo restringir el acceso a ciertas paginas de un libro de excel con un
usuario y un password?
 

Leer las respuestas

#1 Héctor Miguel
25/02/2005 - 05:28 | Informe spam
hola, eduardo !

... restringir el acceso a ciertas paginas de un libro de excel con un usuario y un password?



te paso al final una pequeña combinacion de variables en el modulo de codigo del libro
es la forma mas 'sencilla' y con menos codigo [que he podido imaginar -para tu caso-]
[si buscar algo mas 'robusto/sofisticado/...' los codigos NO quedarian... 'tan delgados']
observa que estoy usando [de manera 'combinada'] los 'codename' y los nombres de la hojas
-> en vba, cada objeto tiene dos 'nombres' [p.e. en la ventana del explorador de proyectos]...
las hojas, cada una 'se llama' +/- Hoja1 (Hoja1) => CodeName (Nombre en pestaña)
el ejemplo funciona... +/- 'bien'... pero... ->tiene una falla<- :((
-> si se esta introduciendo/modificando una formula... 'permite' seleccionar las hojas 'protegidas'
[a menos que estas se encuentren ocultas en la interfase con el usuario] <= OJO
estoy suponiendo que deseas 'proteger' [SIN ocultar] las hojas 2 y 4 [mismos 'name' y 'codename']

bueno, adapta los 'codename' y los 'name' del codigo con los nombres 'reales' de tu libro
corre algunas pruebas y si cualquier duda... ¿comentas?
saludos,
hector.
en el modulo de codigo del libro [ThisWorkbook] ==Dim Permitir As Boolean, Permitida As String, Anterior As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Permitir Then Exit Sub
Select Case Sh.CodeName
Case "Hoja2", "Hoja4": Permitida = Sh.Name
Select Case Sheets(Anterior).CodeName
Case "Hoja2", "Hoja4": Hoja1.Activate
Case Else: Sheets(Anterior).Activate
End Select
If InputBox("Ingresa tu clave por favor...", "Hoja especial") = "Clave aprobada" _
Then Permitir = True: Sheets(Permitida).Activate
End Select: Permitir = False
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Anterior = Sh.Name
End Sub
comentarios 'al margen' [aunque... ni tan 'al margen'] :)) ==[parece que] ultimamente la seguridad esta tomando una relevancia [mas que] 'notable' ;)
['inevitablemente'] se deben usar macros y [obviamente tambien] proteger el proyecto vba
[hasta donde se] NO podras evitar riesgos como: que abran el libro 'SIN permiso' de usarlas
[definitivamente] la 'mejor' alternativa es mantener la/s hoja/s ocultas [propiedad xlSheetVeryHidden]
[por lo cual] habra que proveer una forma [de preferencia un formulario] que permita el acceso a ella/s
[ademas de que 'por el camino'] encontraras 'viscisitudes' al [tratar de] prevenir/corregir/evitar/...etc.
si no quieres que 'se vean' los caracteres de la clave...
[tendras que]... diseñar un userform con un control textbox usando la propiedad 'PasswordChar' [etc.]

Preguntas similares