Email adres ophalen van de gebruiker

Status
Niet open voor verdere reacties.

gl3nn1987

Gebruiker
Lid geworden
24 sep 2010
Berichten
120
Dag allen,

Ik vroeg mij af of het mogelijk was het default e-mailadress van de gebruiker op te halen.

ik wil in een formulier e-mail adress laten prefillen met de hoofdaccount van outlook.


Bij piet jansen zit achter de computer opent mijn file er komt een formulier met daarin
e-mail waar dan meteen komt piet-jansen@email.com
 
Werk je met een Active Directory? Daar gebruik ik deze VBA routine in Excel voor:
Code:
Function GetAdsProp(ByVal SearchField As String, ByVal SearchString As String, ByVal ReturnField As String) As String
    ' Get the domain string ("dc=domain, dc=local")
    Dim strDomain As String
    strDomain = GetObject("LDAP://rootDSE").Get("defaultNamingContext")
    
    ' ADODB Connection to AD
    Dim objConnection As ADODB.Connection
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
        
    ' Connection
    Dim objCommand As ADODB.Command
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
        
    ' Search the AD recursively, starting at root of the domain
    objCommand.CommandText = _
        "<LDAP://" & strDomain & ">;(&(objectCategory=User)" & _
        "(" & SearchField & "=" & SearchString & "));" & SearchField & "," & ReturnField & ";subtree"
    ' RecordSet
    Dim objRecordSet As ADODB.Recordset
    Set objRecordSet = objCommand.Execute
        
    
    If objRecordSet.RecordCount = 0 Then
        GetAdsProp = "not found"  ' no records returned
    Else
        GetAdsProp = objRecordSet.Fields(ReturnField)  ' return value
    End If
    
    ' Close connection
    objConnection.Close
    
    ' Cleanup
    Set objRecordSet = Nothing
    Set objCommand = Nothing
    Set objConnection = Nothing
End Function

De aanroep in een Excel cel is dan als volgt:
=GetAdsprop("cn"; A1; "mail")
Waarbij dan piet jansen in A1 staat.
Het email adres verschijnt dan in de cel waar je deze formule gebruikt.
 
Laatst bewerkt:
Als eerste bedankt.

Ik bedoel alleen denk ik wat anders.

Ik heb in excel vba een formulier gebouwd waar onder andere email een invuloptie is, nu blijkt dat veel mensen dit op een of andere manier weten te verprutsen. Dus ik wil dit automatisch laten laden bij het laden van het formulier. Dus ik heb geen naam niks. Maar omdat ik ook computer user automatisch kon oproepen vroeg ik mij af of dit met het default emailadres in outlook ook kon.
 
Dat kan ook. Wijzig dan de formule in:
=GetAdsprop("samAccountName"; A1; "mail")
In A1 staat Windows Username.
Of je haalt in VBA de gebruikersnaam op met Environ("USERNAME")

Dus zo:
=GetAdsprop("samAccountName"; Environ("USERNAME"); "mail")
 
Laatst bewerkt:
Je moet nog wel de ADO bibliotheek laden. En vraag ook na bij systeembeheer hoe bij jullie de AD moet worden aangeroepen, want ik gebruik dezelfde techniek, maar met hele andere parameters.
 
We lopen niet zo heel uit de pas:
Code:
    objCommand.CommandText = "SELECT mail FROM 'LDAP://ou=accounts,ou=oost,dc=oost,dc=local' " _
        & "WHERE sAMAccountName='" & Inlognaam & "'"
 
of met:

Code:
Sub M_snb()
    msgbox CreateObject("wscript.shell").regread("HKCU\software\Microsoft\Office\Outlook\OMI Account Manager\Accounts\00000002\SMTP Email Address")
End Sub

test uit of het bij jou account 00000001, of 00000003 is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan