Excel - Restringir Acceso a un Libro Excel

 
Vista:

Restringir Acceso a un Libro Excel

Publicado por Albert (13 intervenciones) el 23/06/2007 08:38:29
A ver ... una duda compleja sobre la Seguridad en Excel.

Quiero proteger una posible apertura del libro Excel fuera de mi organización pero sin poner una contraseña de apertura porque esa protección es ridícula y si el libro se abre y cierra muchas veces es engorroso.

Lo que desearía es que se comprobara el nombre de usuario y contraseña de Windows y si es de la organización pues que se pueda abrir el Excel.

Uno de los problemas es que si dependo de la ejecución de Macros, siempre puede haber un listillo que abra el libro sin las Macros y entonces se vería todo.

Alguna idea?

Una primera idea que barajaba es que al cerrar el libro se oculten siempre las Hojas con "VeryHigh" y solo se abran por medio de Macros al abrir el Libro. Esto obliga a que para trabajar en el se deban permitir las Macros.

Puede que me esté liando y haya mejores soluciones, más faciles y no las conozca. Se agradecería la ayuda.

Muchas Gracias Exceleros!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Restringir Acceso a un Libro Excel

Publicado por JuanC (792 intervenciones) el 23/06/2007 13:49:41
a ver... es sabido que la seguridad 100% no existe
siempre existe un "listillo" que rompe los esquemas...

alguna vez hice algo para un 'forero' similar a lo que vos decís...
quizá te sirva...
no está comentado, pero no es muy complicado

En el código del libro...

'//By JuanC 2007

Private Sub Workbook_Open()
If CheckIDDrv Then
Application.ScreenUpdating = False
VerHoja Hoja2, True
VerHoja Hoja1, False
Application.ScreenUpdating = True
Else
ActiveWorkbook.Close False
End If
End Sub

En un módulo...

Option Explicit

Private Const cID = "3A171608" '//Nº serie del disco rígido (cambiar!!)

Private Declare Function apiGetVolumeInformation Lib "kernel32" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal _
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal _
nFileSystemNameSize As Long) As Long

Private Sub OcultarHoja()
VerHoja Hoja2, False
End Sub

Function CheckIDDrv() As Boolean
Dim DrvSerialNo&
Dim DrvLabel As String * 256
Dim FileSys As String * 256
Dim i&, j&, x&

x = apiGetVolumeInformation("C:\", DrvLabel, 256, DrvSerialNo, i, j, FileSys, 256)

If x <> 0 And cID = Hex(DrvSerialNo) Then
CheckIDDrv = True
Else
CheckIDDrv = False
End If
End Function

Sub Auto_Close()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
VerHoja Hoja1, True
VerHoja Hoja2, False
ActiveWorkbook.Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Public Sub VerHoja(ByVal ws As Worksheet, ByVal bMostrar As Boolean)
ws.Visible = IIf(bMostrar, xlSheetVisible, xlSheetVeryHidden)
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar