VBA – Retornando o nome do usuário logado

personal information

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!

Comentários

comentários

3 comentários em “VBA – Retornando o nome do usuário logado”

  1. 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

  2. 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

Os comentários estão fechados.