通过VBA检索AD中的用户

VBA作为一种被用在Microsoft Office产品中的脚本语言,功能实际上是很强大的,这要归功于它继承 了Visual Basic的很多优良传统,如我们可以在VBA工程中像VB 6一样引入类库或ActiveX控件。当然,你 在VB 6中使用的组件或控件也完成可以在VBA中使用,例如日期输入组件。

VBA支持ADO,这也意味着我们可以在VBA中操作数据库,包括SQL Server、Access等。正因为如此,你 可以尝试着在Excel中编写一个VBA程序来将Excel作为一个用于数据同步的中间件,该中间件可以用来同 步应用程序与后台数据库中的数据,并在其中做一些处理。这是完全可以做到的!我在之前的一个项目中 就曾做过这样的例子,我们甚至通过Excel同步了SQL Server和Sharepoint List之间的数据(这个我会在 随后的一些中再做介绍)。

ADO的功能也很强大,我们可以在其中执行Windows脚本,经常使用的就是通过它来管理Windows Server的AD,如遍历AD中的账户,批量修改AD中的账户等,这已经没有什么好奇怪的了,你完全可以在 Windows上使用记事本编写一个vbs脚本,然后直接使用它来管理你服务器上的AD,当然,基于安全考虑, 这些都是需要适当的执行权限的。这些工作通过VBA也可以完成,并且在Excel中你会发觉有的时候很方便 ,如借用Excel现有的UI来展现所操作的数据;基于所查询的数据来生成图表;使用Excel提供的功能修改 数据;遍历和组织数据的方便性等等...

下面我给出一个示例。在新的Sheet中添加一个ActiveX Button,然后添加下面的代码。

Private Sub CommandButton1_Click()
    On Error Resume Next

    Const ADS_SCOPE_SUBTREE = 2

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

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT Name FROM 'LDAP://dc=XXX,dc=com' WHERE objectCategory='user'" 'search all users from the domn XXX
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst

    Dim currCell As Range
    Set currCell = Range("A1")

    Do Until objRecordSet.EOF
        currCell.Value = objRecordSet.fields("Name").Value
         Set currCell = currCell.Offset(1, 0)
        objRecordSet.MoveNext
    Loop
End Sub

时间: 2024-08-22 15:15:55

通过VBA检索AD中的用户的相关文章

SharePoint自动化部署:如何利用PowerShell 导出/导入AD中的用户

这几个月一直在帮客户改需求,部署.我已经心力憔悴,经过一段时间的摸索,我对用PowerShell实现自动化部署也有了一些心得,比如说利用PowerShell导出导入AD中的User.在基于SharePoint平台开发时,利用AD来进行人员的管理,一般会建组织单元(OrganizationalUnit)来对用户进行管理.当最终部署到客户的服务器上时,怎样把本地AD中的用户数据同步到服务器上呢,要知道如果手动输入人员是一件麻烦的事.幸运的事,PowerShell可以帮我们解决这个麻烦的问题. 导出A

如何获取AD中的用户信息

问题描述 现在知道登陆的用户名domainusername如何通过这个username获取他在AD中的其他用户信息呢? 解决方案 解决方案二:System.DirectoryServices.DirectoryEntryde=newSystem.DirectoryServices.DirectoryEntry(path,DomainAccount,DomainPassword);de中存放枚举到的Domain用户信息.解决方案三:这个path是怎么样?写LDAP还是WINT???这个字段的意义是

c# 如何取得ad中的用户列表

问题描述 我想取出ad用户列表存入数据库中,各位大虾请问如何取得呢?谢谢! 解决方案 解决方案二:顶解决方案三:各位大虾,请帮忙,我在网上一直没搜到结果.谢谢!解决方案四:DirectoryEntry用活动目录DirectoryEntrygroupAdmin=newDirectoryEntry("WinNT://"+Environment.MachineName+"/Administrators")去里面获取吧具体方法....解决方案五:try{DirectoryE

根据Firstname和Lastname更新AD中用户帐号Email的服务器脚本

因为工作需要,要给AD中每个用户添加一个email地址.我们公司用的是Lotus Notes,和用Exchange的公司不同,AD中email地址字段是空的. 不过,好在我们的email是有规律的,都是Firstname.Lastname@mycompany.com的这种形式.所以就简单写了一个script,读取用户帐号的Firstname和Lastname值,然后合并成为email地址,再写入AD中的这个用户帐号中去. [功能] (1)读取FirstName和LastName,合并成First

如何在Samba4 AD中集成iRedMail Roundcube

Roundcube 是 Linux 中最常用的 Webmail 用户代理之一,它为终端用户提供了一个现代化的 Web 界面,它可以与所有邮件服务进行交互,以便阅读.撰写和发送电子邮件.Roundcube 支持各种邮件协议,包括安全的邮件协议,如IMAPS.POP3S 或者 submission. 在本文中,我们将讨论如何在 iRedMail 中使用 IMAPS 以及 submission 安全端口配置 Roundcube,以检索和发送 Samba4 AD 帐户的电子邮件.如何从浏览器访问 iRe

使用PHP往Windows系统中添加用户

window 因为添加用户,所以你运行PHP程序的用户必须是管理员权限(Administrator),并且同时需要你的php.ini中的安全模式没有打开,并且关闭函数中没有关闭system().exec().passthru()等函数.   再csdn论坛上看到类似问题,所以有了一下回答,一个简单的思路.http://community.csdn.net/Expert/topic/4190/4190360.xml?temp=.7591669 可以实现, 方法有二. 一.再Web中添加用户 因为添

求助! 怎样从AD中读取到当前的登陆用户名?

问题描述 第一次发帖求助,大家帮帮忙.现在我要从AD中读取当前登录的用户名,并且将其显示在页面上.目前我们写了一个方法如下:==================================privatestringGetName(){//获取当前登陆用户的登陆名WindowsPrincipalwp=(WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;stringwpname=wp.Identity.Name.ToString(

关键词推荐工具中的用户引导机制之二

在<关键词推荐工具中的用户引导机制之一> 我们分析了用户用到机制对搜索引擎/关键词工具的重要性,同时也提到按照用户在搜索引擎/或者关键词工具上交互的阶段,可以按交互前,交互中和交互后为用户分别提供种子query,suggestion和相关搜索词对用户进行引导. 种子query是比较经典的推荐问题, 对于'相关搜索',后续会有博文专门介绍, 该文以下内容主要介绍如何构造高效的suggestion服务.包括架构及内部检索逻辑. suggestion到底有多大作用呢, 在很多搜索引擎中, 一方面,从

当Web服务器与AD服务器分开时,无法通过Web服务器访问AD中的信息

问题描述 以前是将web服务器与AD服务器都用一台时的时候,通过访问web网站可以正常读取其中的AD信息.但是,当将web服务器与AD服务器分开后,即无法访问通过访问web网站读取AD中的信息.报错信息如下.出现了一个操作错误.说明:执行当前Web请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.DirectoryServices.DirectoryServicesCOMException:出现了一个操作错误.源错误: