Microsoft Office 제품에 사용되는 스크립팅 언어인 VBA는 Visual Basic의 많은 훌륭한 전통을 상속한다는 사실 덕분에 실제로 매우 강력합니다. 예를 들어 VB 6. 라이브러리 또는 ActiveX 컨트롤과 같은 VBA 프로젝트에 클래스를 도입할 수 있습니다. . 물론 VB 6에서 사용하는 구성 요소나 컨트롤(예: 날짜 입력 구성 요소)도 VBA에서 사용할 수 있습니다. VBA는 ADO를 지원합니다. 이는 SQL Server, Access 등을 포함하여 VBA에서 데이터베이스를 운영할 수 있음을 의미합니다. 따라서 Excel에서 VBA 프로그램을 작성하여 Excel을 데이터 동기화용 미들웨어로 사용할 수 있습니다. 이 미들웨어는 애플리케이션과 백그라운드 데이터베이스의 데이터를 동기화하고 그 안에서 일부 처리를 수행하는 데 사용할 수 있습니다. 그것은 할 수 있습니다! 이전 프로젝트에서 이러한 예를 수행했으며 Excel을 통해 SQL Server와 Sharepoint 목록 간의 데이터를 동기화하기도 했습니다(이에 대해서는 후속 장에서 소개할 예정입니다). ADO는 또한 매우 강력합니다. Windows 스크립트를 실행할 수 있습니다. AD의 계정 탐색, AD의 계정 일괄 수정 등 Windows Server의 AD를 관리하는 데 자주 사용됩니다. 메모장을 사용하여 Windows에서 vbs 스크립트를 작성한 다음 이를 사용하여 서버에서 AD를 직접 관리할 수 있습니다. 물론 보안 고려 사항에 따라 적절한 실행 권한이 필요합니다. 이러한 작업은 VBA를 통해서도 완료할 수 있으며 Excel에서는 Excel의 기존 UI를 빌려서 쿼리된 데이터를 기반으로 차트를 생성하는 등 Excel에서 제공하는 기능을 사용하여 매우 편리할 때도 있습니다. 데이터 수정, 데이터 탐색 및 구성 용이성 등... 아래에 예를 들어 보겠습니다. 새 시트에 ActiveX 버튼을 추가하고 다음 코드를 추가합니다. Private Sub CommandButton1_Click() 오류 발생 시 다음 재개 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(페이지 크기) = 1000 objCommand.Properties(Searchscope) = ADS_SCOPE_SUBTREE objCommand.CommandText = _ SELECT Name FROM 'LDAP://dc=XXX,dc=com' WHERE objectCategory='user' '에서 모든 사용자 검색 domn XXX 세트 objRecordSet = objCommand.Execute objRecordSet.MoveFirst Dim currCell As Range Set currCell = Range(A1) ObjRecordSet.EOF까지 수행 currCell.Value = objRecordSet.fields(Name).Value Set currCell = currCell.Offset(1, 0) objRecordSet.MoveNext Loop End Sub 코드에서는 가상의 도메인 이름 XXX를 사용했습니다. 독자는 테스트를 원할 경우 이를 실제 도메인 이름으로 변경할 수 있습니다. ADO를 사용하여 지정된 도메인에 대해 사용자 쿼리를 수행하고 해당 도메인의 모든 사용자 이름을 Excel의 현재 시트의 첫 번째 열에 출력했습니다. 아래는 출력 결과의 일부 스크린샷입니다. 스크립트를 통한 AD 운영 방법은 마이크로소프트 공식 문서를 참조하시면 되며, 권한이 허용된 경우 위의 코드를 살짝 수정하시면 AD 내 계정을 일괄적으로 수정하실 수는 없습니다. 여기에서 테스트하는 것이 편리합니다. 조건이 있으면 독자가 직접 시도해 볼 수 있습니다.