Para ello existe una función que yo llamo "ObtDatos".
La sintaxis para llamar la función sería la siguiente:
"=ObtDatos(CAMPO DE BUSQUEDA, valor a buscar, Devolver CAMPO)"
En un caso práctico, esta función quedaría de la siguiente forma:
=ObtDatos(“cn”; A2; “mail”)
Suponiendo que en la celda "A2" tenemos el "CN" (Canonical Name), y queremos como resultado el "Mail".
Esta misma función se puede aplicar a todos los atributos de LDAP.
Algunos de ellos:
Finalmente el código para armar esta función es el que figura a continuación:
Function ObtDatos(ByVal SearchField As String, ByVal SearchString As String, ByVal ReturnField As String) As String' Obtener la ruta del dominio ("dc=DOMINIO, dc=COM", etc)Dim strDomain As StringstrDomain = GetObject("LDAP://rootDSE").Get("defaultNamingContext")' ADODB Conexion hacia ADDim objConnection As ADODB.ConnectionSet objConnection = CreateObject("ADODB.Connection")objConnection.Open "Provider=ADsDSOObject;"' ConexionDim objCommand As ADODB.CommandSet objCommand = CreateObject("ADODB.Command")objCommand.ActiveConnection = objConnection' Buscar en AD recursivamente, empezando desde la raiz del dominioobjCommand.CommandText = _"<LDAP://" & strDomain & ">;(&(objectCategory=User)" & _"(" & SearchField & "=" & SearchString & "));" & SearchField & "," & ReturnField & ";subtree"
' RecordSetDim objRecordSet As ADODB.RecordsetSet objRecordSet = objCommand.ExecuteIf objRecordSet.RecordCount = 0 ThenObtDatos = "No encontrado" ' No se encontraron registrosElseObtDatos = objRecordSet.Fields(ReturnField) ' Valor de retornoEnd If' Cerrar conexionobjConnection.Close' LimpiezaSet objRecordSet = NothingSet objCommand = NothingSet objConnection = Nothing' Hecho por Leandro M. BinoEnd Function
Podés descargar la función ya armada e importarla en el Excel directamente desde ACA: https://sites.google.com/site/nevermindssite/descarga/ObtDatos.xla
Sirve para cualquier versión de Excel, y se debe importar en los complementos del mismo.
No hay comentarios:
Publicar un comentario