Avatar billede jpvj Nybegynder
29. januar 2004 - 13:56 Der er 4 kommentarer og
1 løsning

VBA - Hvordan finder jeg "brugernavnet"

Hvordan finder jeg brugerens fulde navn i VBA?

Det jeg ønsker er det samme navn, som man ser når man taster CTRL+ALT+DEL i 2000/XP og ser "nnnnn er logget på som DOMAIN\username"

Der er "nnnn" jeg gerne vil have...

Det skal bruges til en AutoNew makro, hvor jeg vil indsætte navnet under "Med venlig hilsen".

Jeg kan ikke bruge Application.username, da dette kan være forkert - jeg vil gerne have "Netværks navnet", dvs. det der står på domæne controlleren...
Avatar billede sjh Nybegynder
29. januar 2004 - 15:07 #1
'------------------------------ Form1 ------------------------------
Option Explicit

Private Declare Function GetUserName Lib "advapi32.dll" _
                          Alias "GetUserNameA" ( _
                          ByVal lpBuffer As String, _
                          nSize As Long) As Long

Private Declare Function GetComputerName Lib "kernel32" _
                          Alias "GetComputerNameA" ( _
                          ByVal lpBuffer As String, _
                          nSize As Long) As Long

Public Function Username() As String
Dim strBuff As String
  strBuff = String(100, Chr$(0))
  Call GetUserName(strBuff, 100)
  Username = Left$(strBuff, InStr(strBuff, Chr$(0)) - 1)
End Function

Public Function ComputerName() As String
Dim strBuff As String
  strBuff = String(100, Chr$(0))
  Call GetComputerName(strBuff, 100)
  ComputerName = Left$(strBuff, InStr(strBuff, Chr$(0)) - 1)
End Function

Private Sub Form_Load()
  Me.Caption = (ComputerName & "\" & Username)
End Sub
'------------------------------ Form1 ------------------------------
Avatar billede jpvj Nybegynder
29. januar 2004 - 15:18 #2
Beklager - det er "logon brugernavnet".

Eks:

Peter Jensen er oprettet som bruger på domænet med brugernavn pj.

Din funktion returerer pj - jeg vil have "Peter Jensen"
Avatar billede kabbak Professor
30. januar 2004 - 00:29 #3
Dim wshNetwork
Set wshNetwork = CreateObject("WScript.Network")
brugernavn = wshNetwork.UserName
domain = wshNetwork.userdomain
PcNavn = wshNetwork.ComputerName
'dette lille script finder både brugernavn,domæne samt computernavn.
Avatar billede jpvj Nybegynder
30. januar 2004 - 15:07 #4
kabbak> Den gør præcis det samme som sjh's - blot gennem Windows Script Host. Det (stadig) ikke det jeg søger.

Jeg har fundet en løsning gennem ADSI, og det kan godt være at det er vejen frem.
Avatar billede jpvj Nybegynder
30. januar 2004 - 15:46 #5
Her er så min løsning:

Function GetFullUserName()
    Dim WshNetwork, Command
    Set WshNetwork = CreateObject("WScript.Network")
    UserName = WshNetwork.UserName
    Set con = CreateObject("ADODB.Connection")
    con.Provider = "ADsDSOObject"
    con.Open
    Set Command = CreateObject("ADODB.Command")
    Set Command.ActiveConnection = con
    Command.CommandText = "SELECT * FROM 'LDAP://DC=ed,DC=dk' WHERE sAMAccountName = '" & UserName & "'"
    Command.Properties("searchscope") = 2
    Set rs = Command.Execute
    If rs.EOF Then
        GetFullUserName = ""
    Else
        Set UserObject = GetObject((rs("ADsPath")))
        GetFullUserName = UserObject.FullName
    End If
   

End Function

Sub AutoNew()
  ' Signature name is a document variable (Field Type DocVariable)
  ActiveDocument.Variables("SignatureName").Value = GetFullUserName
  ActiveDocument.Fields.Update
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester