เนื่องจากเป็นภาษาสคริปต์ที่ใช้ในผลิตภัณฑ์ 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 เป็นชุด ฯลฯ ไม่มีอะไรน่าประหลาดใจเกี่ยวกับเรื่องนี้ คุณสามารถใช้ Notepad เพื่อเขียนสคริปต์ vbs บน Windows จากนั้นใช้โดยตรงเพื่อจัดการ AD บนเซิร์ฟเวอร์ของคุณ แน่นอนว่า ขึ้นอยู่กับการพิจารณาด้านความปลอดภัย สิ่งเหล่านี้จำเป็นต้องได้รับสิทธิ์ในการดำเนินการที่เหมาะสม งานเหล่านี้สามารถทำได้ผ่าน VBA และใน Excel คุณจะพบว่าบางครั้งสะดวกมาก เช่น การยืม UI ที่มีอยู่ของ Excel เพื่อแสดงข้อมูลที่กำลังดำเนินการ การสร้างแผนภูมิตามข้อมูลที่สืบค้น แก้ไขข้อมูล ความสะดวกในการสำรวจและจัดระเบียบข้อมูล ฯลฯ ... ฉันจะยกตัวอย่างด้านล่าง เพิ่มปุ่ม ActiveX ลงในชีตใหม่และเพิ่มโค้ดต่อไปนี้ CommandButton1_Click() ส่วนตัวย่อยบนข้อผิดพลาดดำเนินการต่อถัดไป Const ADS_SCOPE_SUBTREE = 2 ชุด objConnection = CreateObject (ADODB.Connection) ชุด objCommand = CreateObject(ADODB.Command) objConnection.Provider = ADsDSOObject objConnection.Open ชุดผู้ให้บริการ Active Directory objCommand.ActiveConnection = objConnection objCommand.Properties(Page Size) = 1,000 objCommand.Properties(Searchscope) = ADS_SCOPE_SUBTREE objCommand.CommandText = _ เลือกชื่อจาก 'LDAP://dc=XXX,dc=com' WHERE objectCategory='user' 'ค้นหาผู้ใช้ทั้งหมดจาก domn XXX ตั้ง 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 เป็นกลุ่มได้อย่างสมบูรณ์ เนื่องจากสภาพแวดล้อมเครือข่ายของบริษัทไม่เป็นเช่นนั้น สะดวกในการทดสอบที่นี่ผู้อ่านสามารถทดลองด้วยตนเองได้หากมีเงื่อนไข