Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
a ella pero cada uno tendr sus limitaciones, osea, cada uno de estos usuarios tendr solo
permiso para algunas modificaciones de celdas, formatos, etc. y al mismo tiempo se me
ocurre ponerle diferentes contraseas a cada uno para que les defina ah sus permisos y
restricciones. Necesito ayuda en esto se los agradecera mucho.
Experto
Buenos Das: Recibe mis cordiales saludos, para generar una cantidad de usuarios, dentro
de tu aplicacin de excel, debes de crear una hoja donde debes tener los siguientes
encabezados. Por ejemplo:
Usuario Contrasea
Columna A columna B
2 Usuario1 1234
3 Usuario2 12345
4 Usuario3 123456
5 UsuarioN ...
El cdigo para validar los usuarios es el siguiente: Te explico, yo cargue mis usuarios en
un combobox, en una caja de texto tengo que ingresar la contrasea, y validarla con el
botn ingresar, este es el cdigo que realize, acoplalo a lo que estas necesitando.
Application.ScreenUpdating = False
On Error GoTo Errorusuario
Dim strClaveUser$
strClaveUser$ = Application.WorksheetFunction.VLookup(CmbUsuario,
Worksheets("Nombre del LIbro").range("A2:B5"), 2)
If TxtContrasea <> strClaveUser$ Then
MsgBox "Contrasea Incorrecta", vbCritical, "ERROR"
TxtContrasea = ""
Exit Sub
Application.Visible = True
End If
If CmbUsuario.Text = "Usuario1" Then
FrmIngresoSistema.Hide
FrmAnalisisCostos.Show
Exit Sub
End If
Exit Sub
Errorusuario:
MsgBox "Ingrese: Usuario y/o contrasea", vbInformation, "VERIFICAR"
Application.ScreenUpdating = True
End Sub
En el caso de los permisos, te doy una idea, si seleccionar un usuario e ingresas su
contrasea dentro de tu programacin tienes que asignarle permisos, por ejemplo:
If CmbUsuario.Text = "Usuario1" Then ' Si el usario de tu combobox es usuario1, y la
contrasea que has ingresado corresponde al usario1, te mostrara la siguiente :
' Abre libro
Application.Workbooks.Open "C:\Analisis de costos\Costos\Trujillo Costos 2009.xls"
'Activa la Hoja
Workbooks("Trujillo Costos 2009.xls").Worksheets("Hoja1").Activate
' Codigo:Proteger y desproteger una hoja
ActiveSheet.Unprotect Password:="12345"
Worksheets("Hoja1").Unprotect Password:="12345"
elseIf CmbUsuario.Text = "Usuario2" Then ' Si el usario de tu combobox es usuario2, y la
contrasea que has ingresado corresponde al usario1, te mostrara la siguiente :
' Abre libro
Application.Workbooks.Open "C:\Analisis de costos\Costos\Trujillo Costos 2009.xls"
'Activa la Hoja
Workbooks("Trujillo Costos 2009.xls").Worksheets("Hoja1").Activate
' el usuario2, ingresa sin ninguna proteccion a la hoja 1
Exit Sub
De esta manera puedes ortotgarle permisos a un usuario. Espero poderte haber ayudado,
saludos.
Estimados, tengo un archivo excel el cual al abrirlo pide usuario y contrasea, este
funciona bien, el problema esta que si agrego una letra que contenta el usuario y/o la
contrasea deja entrar o ingreso con un nombre de usuario POR y me deja entrar con la
contrasea de otro. Cmo puedo hacer para que el usuario y contrasea sean exactos?
Este es el cdigo que uso:
Saludos y gracias.
Experto
Hola
Mira cero que tu enfoque esta mal orientado, pues utilzias la funcin buscar y no en forma
exacta, pues de esa manera el find te devuelve la coincidencia ms prxima y no exacta.
Prueba de esta manera:
Ahora si me permites una opinin, creo que tener usuarios y contraseas en una hoja
dentro del mismo libro que intentas proteger no es lo ms adecuado.
excel (v2007) cuenta con la manera de otorgar accesos controlados mediante usuarios y
contrasea cifrados, lo encuentras en la pestaa "Revisar" opcin "Permitir que los
usuarios modifiquen rangos".
bye
Usuario
Funciona amigo, pero si no ingreso nada o ingreso con user no registrado, no me dice que
el user o contrasea estn incorrectas, me limpia los textbox y me deja en el 1. gracias por
tu tiempo.
Experto
Dim user As String
Dim pass As String
Dim fila As Integer
Dim ex As Boolean
user = UCase(Trim(TBX_USUARIO))
pass = UCase(Trim(TBX_CLAVE))
If Len(user) = 0 Or Len(pass) = 0 Then MsgBox "Ingrese usuario y contrasea",
vbInformation: Exit Sub
fila = Application.WorksheetFunction.CountA(Sheets("UserPass").Range("A:A"))
If fila = 0 Then Exit Sub
Dim R As Range
ex = False
For Each R In Sheets("UserPass").Range("A1" & ":" & "A" & fila)
If UCase(R) = user Then
If UCase(R.Offset(0, 1)) = pass Then
ex = True
Unload Me
Application.Visible = True
'aca pones el resto del codigo para el evento que usuario y contrasea sean ok
Exit For
Else
MsgBox " Contrasea Incorrecta", vbInformation, "Error"
Exit For
End If
DoEvents
End If
DoEvents
Next
Set R = Nothing
If ex = False Then MsgBox "Usuario no registrado", vbCritical
TBX_USUARIO = ""
TBX_CLAVE = ""
On Error Resume Next
TBX_USUARIO.SetFocus