【问题标题】:Index of Object from LDAP Query来自 LDAP 查询的对象索引
【发布时间】:2016-05-25 18:56:30
【问题描述】:

我在 VBA 中运行 LDAP 查询并使用 GetObject 获取匹配的对象:

Set colOU = GetObject("LDAP://OU=LazyPeople,DC=somecompany,DC=com")
colOU.Filter = Array("user")

我一直在使用 For Each 语句遍历 colOU

For Each objADObject In colOU

但是,我需要做的是提供一个 ListBox,其中包含来自 colOU 的每个用户的名称,并让用户选择一个条目。然后我想从colOU 回到对应于用户选择和操作属性的那个实例(objADObject)。

我想做的是在列表框的每个条目中为每个objADObject 存储一个索引,并在用户做出选择后使用该索引从colOU 中调用该实例。但是,我找不到按索引访问colOU 项目的方法(.Items、.Item、.Members、.Count 和 UBound 会生成错误)。我也未能成功将colOU 转换为集合。

有什么建议吗?

另外,我如何调查 VBA 中的对象以确定是否可以枚举(在 .NET 中我将其称为 IEnumerable)。

谢谢。

【问题讨论】:

  • 你能发布代码吗?最初的想法,也许只是制作一个本地集合/数组来跟踪所有这些东西?

标签: vba excel collections ldap


【解决方案1】:

好的,我已经解决了这个问题。

显然,您可以获取 colOU 对象并执行以下操作:

Set objADObject = colOU.GetObject("user", <RelativeDistinguishedName>)

它会将 objADObject 设置为正确的用户对象。因此,我将objADObject.name(即RelativeDistinguishedName)分配给ListBox 的隐藏列2。当我从隐藏列中检索值时,我可以将它作为变量传递给colOU.GetObject,我将获得对正确用户对象的引用。

嘘!

但是,如果有人知道答案,我仍然想知道是否可以枚举colOU

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    相关资源
    最近更新 更多