Ayuda con acceso a Libro Excel en funcion del usuario

15/04/2004 - 12:23 por Raimundo Planes | Informe spam
Estimado Grupo estoy intentando hacer un libro Excel con varias Hojas. Este
Libro será utilizado por distintos usuarios.
1º Desde el Excel, ¿se puede saber el usuario que ha iniciado sesión en
Windows?
2º Como el Libro tiene varias Hojas con distintas funcionalidades, lo que
intento es que según el usuario, que el Libro se le abra en una determinada
Hoja y también, si se puede, ocultar o bloquear otras Hojas..

Si me podéis ayudar os estaría muy agradecido

Un saludo
Raimundo Planes

Preguntas similare

Leer las respuestas

#1 Pepinho
15/04/2004 - 12:58 | Informe spam
"Raimundo Planes" wrote in
news:#:

Estimado Grupo estoy intentando hacer un libro Excel con
varias Hojas. Este Libro será utilizado por distintos
usuarios. 1º Desde el Excel, ¿se puede saber el usuario que
ha iniciado sesión en Windows?
2º Como el Libro tiene varias Hojas con distintas
funcionalidades, lo que intento es que según el usuario,
que el Libro se le abra en una determinada Hoja y también,
si se puede, ocultar o bloquear otras Hojas..




En teoria en excell si puedes saber el usuario, por ejemplo
con esta sencilla funcion

Function devolverusuario() As String
devolverusuario = Application.UserName
End Function

te devuelve el nombre del usuario.

El resto seria programar una macro que se ejecute al abrir el
archivo, como por ejemplo:

Sub auto_open() 'asi la macro se ejecuta cuando abres el libro
devolveruser = Application.UserName
Select Case devolveruser
Case Is = "user1"
Sheets("Hoja1").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("hoja2").Select
Case Is = "user2"
Sheets("Hoja2").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("hoja3").Select
Case Else
Sheets("Hoja3").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("hoja1").Select
End Select
End Sub

Con esto si inicia el user1 oculta la hoja1 y selecciona la
hoja2. Puedes añadir todo lo que quieras. Ademas deberias
incluir otro modulo llamado Auto_close que haga visible el
resto de hojas cuando la abras.

Saludos y suerte.
Respuesta Responder a este mensaje
#2 Héctor Miguel
16/04/2004 - 00:35 | Informe spam
hola, chicos !

Raimundo escribio
... un libro ... sera utilizado por distintos usuarios.
1º Desde el Excel, ¿se puede saber el usuario que ha iniciado sesión en Windows?
2º ... que segun el usuario ... se le abra en una determinada Hoja y ... ocultar o bloquear otras.

Pepinho escribio
... puedes saber el usuario ... con esta sencilla funcion
Function devolverusuario() As String
devolverusuario = Application.UserName
End Function
te devuelve el nombre del usuario.
El resto seria programar una macro que se ejecute al abrir el archivo [...]





- con respecto de la macro 'auto-ejecutable' para 'averiguar' al nombre del usuario y accionar 'en consecuencia'... ¡perfecto!!!
- con respecto del 'nombre del usuario devuelto'... [creo yo que]
1.- no tiene sentido diseñar una funcion 'pesonalizada' que utiliza [simplemente] UNA instruccion =>Application.UserName< [puedes usar la instruccion 'directamente' en lugar de 'filtrarla' por una funcion personalizada] ...eso digo yo... :((
2.- Application.UserName 'devuelve'... el nombre REGISTRADO en la instalacion de la aplicacion...
NO... el nombre del usuario =>que 'loggeo'<= su entrada en la secion :((
=> se requiere hacer llamadas a las API's de la libreria 'AdvAPI32.dll' <=en seguida expongo un ejemplo de 'su uso'.
saludos,
hector.
::::::::::
en un modulo de codigo 'normal' ==Option Private Module ' para que el modulo sea 'exclusivo' del codigo NO del usuario :) '
Public UsuarioDeSesion As String ' una variable publica para 'almacenar' al usuario loggeado '
' la llamada a las API's '
Declare Function NombreDelUsuario Lib "AdvAPI32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
' la funcion que 'devuelve' el nombre del usuario en la sesion _
esta funcion la podras llamar siempre [si por alguna razon 'se borra' la variable] :( '
Function InicioDeSesion() As String
Dim NombreTexto As String * 100, LargoTexto As Long
LargoTexto = 100
NombreDelUsuario NombreTexto, LargoTexto
UsuarioDeSesion = Left(NombreTexto, LargoTexto - 1)
End Function
en el modulo de codigo del libro ==' para 'llenar' la variable desde el inicio del libro '
Private Sub Workbook_Open()
InicioDeSesion
End Sub

despues, podras usar dentro de tu codigo la variable 'UsuarioDeSesion' [p.e.]
Sub Nombres()
MsgBox "Aplicacion registrada por: " & Application.UserName & vbCr & _
"Sesion iniciada por... Hola, " & UsuarioDeSesion
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida