Notifications
Clear all

NOME DO USUÁRIO - VBA

16 Posts
4 Usuários
0 Reactions
3,992 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde pessoas,

Seguinte, sempre uso o environ("username"), e claro que com 3 minutos de pesquisa, encontrei milhares de alternativas mais complexas. Ok.
Eu não quero saber o USERNAME, eu quero encontrar meu NOME.
Algum código que busque o nome do usuário logado na máquina?
Por exemplo, meu username é 564564 mas meu nome é Fernando e este meu nome aparece quando clicamos no botão do Windows.

Como encontro esse nome, via VBA?

Valeeu!

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2016 3:07 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Fernando

Não sei se entendi, bem, mas não seria isso:

http://www.tomasvasquez.com.br/blog/mic ... rio-logado

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2016 3:37 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não sei se entendi, bem

Boa noite Patropi. Não, não é isso.
Eu quero um código que devolva meu nome, ao invés do username logado da rede.

Obrigado mesmo assim.

FF

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2016 4:00 pm
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

Tenho o code abaixo. Na época procurei para todos os lados e achei no link abaixo:

http://www.mrexcel.com/forum/excel-questions/2252-get-windows-user-name.html

Option Explicit
  
Sub Users_Fullname()
'originally coded as VB script by A.Vials, converted to VBA by Sly
Dim objInfo
Dim strLDAP
Dim strFullName
  
Set objInfo = CreateObject("ADSystemInfo")
strLDAP = objInfo.UserName
Set objInfo = Nothing
strFullName = GetUserName(strLDAP)
  
MsgBox "Full name of User is " & strFullName  'step to test
  
End Sub

Function GetUserName(strLDAP)
  Dim objUser
  Dim strName
  Dim arrLDAP
  Dim intIdx
  
  On Error Resume Next
  strName = ""
  Set objUser = GetObject("LDAP://" & strLDAP)
  If Err.Number = 0 Then
    strName = objUser.Get("givenName") & Chr(32) & objUser.Get("sn")
  End If
  If Err.Number <> 0 Then
    arrLDAP = Split(strLDAP, ",")
    For intIdx = 0 To UBound(arrLDAP)
      If UCase(Left(arrLDAP(intIdx), 3)) = "CN=" Then
        strName = Trim(Mid(arrLDAP(intIdx), 4))
      End If
    Next
  End If
  Set objUser = Nothing
  
  GetUserName = strName
  
End Function

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 08/11/2016 4:00 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Mas o seu nome esta gravado onde no PC?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/11/2016 5:06 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tenho o code abaixo. Na época procurei para todos os lados e achei no link abaixo:
http://www.mrexcel.com/forum/excel-questions/2252-get-windows-user-name.html

Animal, este eu não tinha visto ainda.... Acredito que vai dar certo pq vai buscar no AD... sei lá... aqui em casa não funcionou, talvez pq não estou numa rede corporativa?
Enfim, vou testar amanhã !

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2016 6:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mas o seu nome esta gravado onde no PC?

Eu não sei. No meu PC, eu acredito que nenhum lugar, mas no trabalho, quando clico no botão Windows , meu nome aparece ali no topo à direita...
Para transformar o meu programa em VBA mais amigável, quero pegar o nome do cara direto do windows, ou do active directory, sei lá... o windows sabe meu nome. Eu tb quero saber o nome do usuário.
Não quero ver jmsilva, quero ver João Maria Silva...

Entendeu ?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2016 7:00 pm
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

Ate hoje só testei na rede corporativa. Utilizo esse code para puxar o nome dos usuários. Nunca parei para entender a fundo. Mas até hoje deu super certo.

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 08/11/2016 8:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Utilizando a rotina que o Pfarias indicou mostra o meu nome completo igual ao que aparece ao pressionar o icone do Windows:

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/11/2016 8:03 am
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Tentei utilizar o código indicado nosso amigo pfarias, mas apresentou o seguinte erro:

Onde estou errando?
Preciso referenciar algum biblioteca?

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 09/11/2016 11:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu não precisei habilitar nada, copiei, colei e executei, qual versão do seu Office e windows ?
De uma olhada em Referências se tem alguma como AUSENTE.

Na net tem alguns tópicos sobre este erro, de uma olhada nestes dois :
O dominio especificado nao existe ou nao pode ser contactado - Terminais de Virtualização
https://social.technet.microsoft.com/Fo ... w8serverpt

Você recebe uma mensagem de erro "o domínio especificado não existe ou não pôde ser contatado"
https://support.microsoft.com/pt-br/kb/902336

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/11/2016 6:08 pm
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Eu não precisei habilitar nada, copiei, colei e executei, qual versão do seu Office e windows ?

Office Versão 16.0.6965.2092
RuWindows 8.1 Pro 64bits

De uma olhada em Referências se tem alguma como AUSENTE.

Não tem nada aparecendo como ausente.

Vou dar uma olhada nos links e procurar algo na internet, obrigado Mauro Coutinho.

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 09/11/2016 8:41 pm
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

Eu não precisei habilitar nada, copiei, colei e executei, qual versão do seu Office e windows ?

Office Versão 16.0.6965.2092
RuWindows 8.1 Pro 64bits

talvez possa haver diferença por ser 64bits. =/ Alguém com 64 bits tentou e funcionou?

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 10/11/2016 7:37 am
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

Eu simplifiquei o code. Para mim achei melhor assim:

Option Explicit
  
Function GetUserName() As String

Dim objInfo As Object
Dim objUser As Object

Dim strLDAP As String
Dim strName As String
Dim arrLDAP
Dim intIdx  As Long
  
    Set objInfo = CreateObject("ADSystemInfo")
    strLDAP = objInfo.UserName
    Set objInfo = Nothing

On Error Resume Next
    Set objUser = GetObject("LDAP://" & strLDAP)
        
    If Err.Number = 0 Then
        strName = objUser.Get("givenName") & Chr(32) & objUser.Get("sn")
    End If
        
    If Err.Number <> 0 Then
      arrLDAP = Split(strLDAP, ",")
      For intIdx = 0 To UBound(arrLDAP)
        If UCase(Left(arrLDAP(intIdx), 3)) = "CN=" Then
          strName = Trim(Mid(arrLDAP(intIdx), 4))
        End If
      Next
    End If
    
    Set objUser = Nothing
        
    GetUserName = strName
  

''########################################
            'MsgBox GetUserName
''########################################


End Function

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 10/11/2016 8:01 am
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Eu simplifiquei o code. Para mim achei melhor assim:

Tanto o código extenso como o código simplificado funcionou pfarias no ruWindows 8.1 Pro 64 bits, mas só funcionou por que estou conectado na rede da empresa onde trabalho, pois quando tentei utilizar em casa o código extenso não quis funfar.

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 10/11/2016 11:25 am
Página 1 / 2