No VBA, a opção mais trivial para obter o nome do usuário logado na máquina é através de uma chamada a API advapi32.dll. Nada contra APIs, mas sempre que puder evitar de usá-las, eu prefiro, já que suas chamadas são feitas em baixo nível e requerem um nível de conhecimento bem avançado desta.
Abaixo segue um exemplo que efetua a tarefa sem a necessidade de API no VBA:
'Function que retorna o nome do usuário de rede logado Function UsuarioRede() As String Dim GetUserN Dim ObjNetwork Set ObjNetwork = CreateObject("WScript.Network") GetUserN = ObjNetwork.UserName UsuarioRede = GetUserN End Function Sub Mostra() MsgBox UsuarioRede End Sub |
O código faz uso do objeto WScript.Network, comumente encontrado nas versões mais atuais do Windows, dispensando referências manuais. Se não me engano, obtive este código em uma edição revista da FórumAccess. Quanto a autoria, ela é do Luiz Cláudio Vieira da Rocha, renomado especialista em Office no Brasil.
Bom proveito a todos!
Ei beleza.
Tenho uma sugestao mais simples aimda
Foi criada como função mas se nao quiser nem precisa.
Function usuarioAtivo() As String
usuarioAtivo = Environ(“USERNAME”)
End Function
Utilize esta rotina para retornar os arquimentos.
Sub Argumentos_Environ()
i = 1
Do Until Environ(i) = “”
Cells(i, 1) = Environ(i)
i = i 1
Loop
End Sub
Grande abraço…
Luthius
Luthius,
Muitíssimo bem lembrado! Mais algumas opções sobre a função Environ:
ALLUSERSPROFILE
APPDATA
AVENGINE
CLIENTNAME
CommonProgramFiles
COMPUTERNAME
ComSpec
FP_NO_HOST_CHECK
HOMEDRIVE
HOMEPATH
INCLUDE
INOCULAN
LIB
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramFiles
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERNAME
USERPROFILE
VS71COMNTOOLS
WecVersionForRosebud.FF0
windir
Valeu a dica!
Abraços
Tomás