Как язык сценариев, используемый в продуктах Microsoft Office, VBA на самом деле очень мощный благодаря тому, что он наследует многие прекрасные традиции Visual Basic. Например, мы можем вводить классы в проекты VBA, такие как библиотека VB 6 или элемент управления ActiveX. . Конечно, компоненты или элементы управления, которые вы используете в VB 6, также можно использовать и в VBA, например компонент ввода даты. VBA поддерживает ADO, что также означает, что мы можем работать с базами данных в VBA, включая SQL Server, Access и т. д. По этой причине вы можете попытаться написать программу VBA в Excel, чтобы использовать Excel в качестве промежуточного программного обеспечения для синхронизации данных. Это промежуточное программное обеспечение можно использовать для синхронизации данных в приложении и фоновой базе данных, а также для выполнения некоторой обработки в них. Это можно сделать! Я приводил такой пример в предыдущем проекте, и мы даже синхронизировали данные между SQL Server и списком SharePoint через Excel (я расскажу об этом в некоторых последующих главах). ADO также очень мощный инструмент. В нем мы можем выполнять сценарии Windows. Его часто используют для управления AD Windows Server, например, для перемещения учетных записей в AD, пакетного изменения учетных записей в AD и т. д. Да, в этом нет ничего удивительного. вы можете использовать Блокнот для написания сценария VBS в Windows, а затем использовать его непосредственно для управления AD на вашем сервере. Конечно, из соображений безопасности для этого требуются соответствующие разрешения на выполнение. Эти задачи также можно выполнить с помощью VBA, и в Excel вы обнаружите, что иногда это очень удобно, например, заимствование существующего пользовательского интерфейса Excel для отображения обрабатываемых данных, создание диаграмм на основе запрошенных данных с использованием функций, предоставляемых Excel; изменять данные; простота перемещения и организации данных и т. д. Ниже я приведу пример. Добавьте кнопку ActiveX на новый лист и добавьте следующий код. Частная подпрограмма CommandButton1_Click() При ошибке Возобновить следующую Const ADS_SCOPE_SUBTREE = 2 Установить objConnection = CreateObject (ADODB.Connection) Установить objCommand = CreateObject(ADODB.Command) objConnection.Provider = ADsDSOObject objConnection.Open Active Directory Provider Установить objCommand.ActiveConnection = objConnection objCommand.Properties(Размер страницы) = 1000 objCommand.Properties(Searchscope) = ADS_SCOPE_SUBTREE objCommand.CommandText = _ SELECT Name FROM 'LDAP://dc=XXX,dc=com' WHERE objectCategory='user' 'искать всех пользователей из 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 В коде я использовал воображаемое доменное имя XXX. Читатели могут изменить его на реальное доменное имя, если захотят протестировать. Мы использовали ADO для выполнения запроса пользователя в указанном домене и вывода имен всех пользователей в домене в первый столбец текущего листа в Excel. Ниже приведен частичный снимок экрана с результатами вывода. Что касается управления AD через сценарии, читатели могут обратиться к официальной документации Microsoft. Если разрешения разрешены, слегка измените приведенный выше код, и вы сможете полностью изменять учетные записи в AD в пакетном режиме. С учетом сетевой среды компании это невозможно. удобно протестировать здесь. Читатели могут попробовать сами, если у них есть условия.