Jump to content
lphant

Bloquear apertura de Excel si no estás en el listado

Recommended Posts

Buenos días;

 

Se podría bloquear la apertura de un Excel para que solo los usuarios de listado de la pestaña “USUARIOS” lo puedan abrir??.

Y bloquear el tamaño de las columnas sin bloquear todo lo demás??.

 

Muchas gracias de antemano.

Share this post


Link to post
Share on other sites
Ahora mismo, lphant dijo:

Buenos días;

 

Se podría bloquear la apertura de un Excel para que solo los usuarios de listado de la pestaña “USUARIOS” lo puedan abrir??.

Y bloquear el tamaño de las columnas sin bloquear todo lo demás??.

 

Muchas gracias de antemano.

Me esta dando error al intentar adjuntar el excel, en cuanto me deje le adjunto.

Share this post


Link to post
Share on other sites

Te dejo una solución @lphant . Antes de ponerlo en uso, ten en cuenta:

  • Verás que en el código del formulario hay toda una subrutina comentada. Sirve para que no se pueda cerrar el formulario con la X. Lo  he dejado así para que puedas trabajar con el form si quieres cambiar algo en él. Descoméntala en la versión final
  • PROTEGE el proyecto VBA con contraseña y, si quieres, para que no aparezca en el editor de VBA. Si no alguien con un poco de maña te desmontará el invento ;)
  • La busqueda de usuarios se realiza por el nombre exacto y distingue entre mayúsculas/minúsculas mediante los siguientes parámetros:
LookAt:=xlWhole, MatchCase:=True
  • Si no quieres que sea así, modifícalos: LookAt para búsqueda de nombre exacto, MatchCase para distinguir may/min

 

Copia de USUARIOS_XX.xlsm

Share this post


Link to post
Share on other sites
Hace 2 horas, Haplox dijo:

Te dejo una solución @lphant . Antes de ponerlo en uso, ten en cuenta:

  • Verás que en el código del formulario hay toda una subrutina comentada. Sirve para que no se pueda cerrar el formulario con la X. Lo  he dejado así para que puedas trabajar con el form si quieres cambiar algo en él. Descoméntala en la versión final
  • PROTEGE el proyecto VBA con contraseña y, si quieres, para que no aparezca en el editor de VBA. Si no alguien con un poco de maña te desmontará el invento ;)
  • La busqueda de usuarios se realiza por el nombre exacto y distingue entre mayúsculas/minúsculas mediante los siguientes parámetros:
LookAt:=xlWhole, MatchCase:=True
  • Si no quieres que sea así, modifícalos: LookAt para búsqueda de nombre exacto, MatchCase para distinguir may/min

 

Copia de USUARIOS_XX.xlsm

funciona perfectamente.

se podria poner mas automatico ( que no tengamos que poner el usuario si no que al abrir el excel detecte el usuario que lo abre y si estas en la lista se abra y si no no )??.

un saludo,

Share this post


Link to post
Share on other sites
Hace 1 minuto , lphant dijo:

al abrir el excel detecte el usuario que lo abre

 

Jooooder... eso es para nota :wacko: . No sé, se me ocurre que detectase el usuario que arrancó la máquina, pero para eso debo investigar, por que no tengo ni idea.

Y si no que, mientras abre el archivo, que grite muy alto su usuario, a ver si excel lo pilla :rolleyes:

Share this post


Link to post
Share on other sites
Hace 13 minutos , Haplox dijo:

Jooooder... eso es para nota :wacko: . No sé, se me ocurre que detectase el usuario que arrancó la máquina, pero para eso debo investigar, por que no tengo ni idea.

Hola, con Application.UserName obtendrás el nombre de usuario que inicio sesión, no se si eso es lo que pueden necesitar.

Saludos.

Share this post


Link to post
Share on other sites

Pues parece que no es tan difícil @lphant :o. Inserta un nuevo módulo:

Sub usuario()
Dim user As String
Dim uf As Long
Dim wshNetwork As Object 'New wshNetwork
Dim usuario

Set wshNetwork = CreateObject("WScript.Network")

user = wshNetwork.UserName

uf = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

Set usuario = Sheets(1).Range("A2:A" & uf).Find(user, LookAt:=xlWhole, MatchCase:=True)

If usuario Is Nothing Then
MsgBox "No tiene permisos para acceder al archivo", vbCritical
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
End If

End Sub

En el workbok.open, llama a esta macro. para hacer pruebas comenta el

ActiveWorkBook.Close

Si no te va a dar quebraderos de cabeza;)

 

Edited by Haplox

Share this post


Link to post
Share on other sites

Que sepas, que solo manteniendo la tecla Shift pulsada mientras se abre el archivo o desactivando las macros, cualquier macro que se ejecute al abrir el archivo, queda desactivada.

Mejor protege el archivo con una contraseña y que solo la conozcan los usuarios autorizados.

Saludos a todos.

Share this post


Link to post
Share on other sites
Hace 7 horas, Haplox dijo:

PROTEGE el proyecto VBA con contraseña y, si quieres, para que no aparezca en el editor de VBA. Si no alguien con un poco de maña te desmontará el invento ;)

justo a eso me refería @Antoni , al menos los que no sepan demasiado no accederían, pero VBA o es lo más seguro para seguridad, y menos con una implementación de este tipo. :blink:

Share this post


Link to post
Share on other sites

hola, a todos !

Hace 52 minutos , Visor dijo:

debe haber otro truco mas que solo shift, pues tengo un archivo que llevo días que no lo puedo abrir pulsando shift

(por si fuera de utilidad...) mantener pulsada la tecla {shift} para omitir los eventos de apertura de un archivo de excel, funciona SOLAMENTE si el libro lo estas abriendo desde el mismo excel (archivo > abrir ...) pero NO FUNCIONA si el libro se abre cualquier otro medio (atajos, desde el escritorio, desde un explorador, etc.), en estos casos SI se ejecutan las macros de apertura ;)

saludos,
hector.

Share this post


Link to post
Share on other sites
Hace 21 horas, Haplox dijo:

Pues parece que no es tan difícil @lphant :o. Inserta un nuevo módulo:

Sub usuario()
Dim user As String
Dim uf As Long
Dim wshNetwork As Object 'New wshNetwork
Dim usuario

Set wshNetwork = CreateObject("WScript.Network")

user = wshNetwork.UserName

uf = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

Set usuario = Sheets(1).Range("A2:A" & uf).Find(user, LookAt:=xlWhole, MatchCase:=True)

If usuario Is Nothing Then
MsgBox "No tiene permisos para acceder al archivo", vbCritical
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Exit Sub
End If

End Sub

En el workbok.open, llama a esta macro. para hacer pruebas comenta el

ActiveWorkBook.Close

Si no te va a dar quebraderos de cabeza;)

 

Muchisimas gracias, funciona de maravilla ;)

 

Share this post


Link to post
Share on other sites
Hace 16 horas, Antoni dijo:

Que sepas, que solo manteniendo la tecla Shift pulsada mientras se abre el archivo o desactivando las macros, cualquier macro que se ejecute al abrir el archivo, queda desactivada.

Mejor protege el archivo con una contraseña y que solo la conozcan los usuarios autorizados.

Saludos a todos.

lo que hago es ocultar todas las pestañas al cerrar el excel para que al a abrir el excel si no activan las macros no puedan usar el excel.

muchas gracias por la información ;)

Share this post


Link to post
Share on other sites
Hace 4 horas, lphant dijo:

lo que hago es ocultar todas las pestañas al cerrar el excel para que al a abrir el excel si no activan las macros no puedan usar el excel.

muchas gracias por la información ;)

@lphant debes considerar que aun teniendo las hojas en veryhidden, cualquier usuario que tenga conocimientos de VBA puede hacerlas vibles incluso protegiendo el proyecto. 

Saludos!

Share this post


Link to post
Share on other sites
Hace 18 horas, lphant dijo:

bloquear el tamaño de las columnas

Puedes usar esta pequeña macro:

Sub Proteger_Hoja()
With ActiveSheet
.Protect password:="clave", userinterfaceonly:=True
.Range("A:A,D:D,F:K").ColumnWidth = 25
End With
End Sub 

Mira en la ayuda de Microsoft para Protect y puedas ver todas las opciones:

WorkSheet.Protect

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png