如何通过vba

时间:2016-01-14 10:42:14

标签: vba ldap lotus-domino

我为ms word写了一个宏,它在文档加载时开始,并用用户信息填写一些字段(电话,电子邮件等)。我希望这些信息来自我们的多米诺骨牌服务器,因为它们是我们的主要数据库。

我已尝试在vba中使用notes对象在服务器上建立会话,但这需要用户保持他们的笔记客户端打开(据我所知),所以这不是一个选项。

目前我正在尝试通过ldap请求获取信息(domino-server运行ldap-service),但是我无法找到有关代码和搜索字符串的外观的信息。 我尝试过的最后一个网站是这个(http://www.selfadsi.org/bind.htm),使用" Bind使用特殊凭据"变体。

但我收到一个协议错误。(字符串可能需要调整以连接到多米诺骨牌,我试过" LDAP:// [Server-FQN] / dc = DE"希望它会显示我注册为C = DE的所有用户,但它不起作用。)

我还搜索了IBM支持站点和知识中心,但找不到我需要的信息。

如果有人能提供一个关于如何连接到domino ldap并为用户提取信息的示例,我将非常感激。

2 个答案:

答案 0 :(得分:2)

VBA中有两组不同的Notes对象。有OLE对象,您可以通过这种方式访问​​:

Set Session = CreateObject("Notes.NotesSession")

还有COM对象,您可以通过这种方式访问​​:

Set Session = CreateObject("Lotus.NotesSession")

它们之间的主要区别在于OLE对象要求Notes客户端必须运行,并且它们还包括可以实际驱动Notes客户机的Notes.NotesUIWorkspace等“前端”类,而COM对象不需要Notes客户端正在运行(尽管它或者必须安装Domino服务器)并且它不提供前端类。

如果您想坚持使用LDAP方法,那么您应该做的第一件事就是下载LDAP客户端。我喜欢SoftTerra LDAP浏览器,但我也听说很多人喜欢Apache Directory Studio。浏览树真的是找出哪些查询可以获得所需信息的最佳方法。

答案 1 :(得分:0)

在Richards回答的文章中提到过,我也尝试使用LDAP浏览器找到LDAP-String。使用ADODB对象执行此操作并进行一些测试我能够提供以下代码:

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection

objCommand.CommandText = "SELECT UID, mail FROM 'LDAP://[Server-FQN]:389 'WHERE ObjectClass='dominoPerson'"
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
    varMail = objRecordSet.Fields("mail").Value
    Debug.Print varMail(0)
    objRecordSet.MoveNext
Wend

使用匿名访问提取所有用户的电子邮件地址,并将结果打印到调试窗口。 现在,我所要做的就是调整WHERE-Statement以获取每个用户想要的数据。 : - )