1.調用DOS命令:net user 獲取系統用戶到txtfile
2.打開txtfile把內容處理(空格全替換爲換行;已換行分列)後賦值到A
3.把A列不爲空的值且不到特殊用戶表的值寫到臨時表
4.與EXCEL用戶表進行對比 使用函數COUNTIF
(1)臨時表有,用戶表沒有——編寫刪除用戶命令: "net user " & Range("a" & i) & " /DELETE"html
(2)臨時表沒有,用戶表有——編寫新增用戶命令:"net user " & Range("a" & i) & " " & Range("B" & i) & " /add /fullname:" & Chr(34) & Range("D" & i) & Chr(34) & " /comment:" & Chr(34) & Range("E" & i) & Range("F" & i) & Chr(34)
寫到batfile文件;windows
5.執行batfile腳本,實現windows用戶與EXCEL用戶同步;服務器
視頻教程製做中:https://edu.51cto.com/lecturer/6969164.htmlide
VBA代碼以下:函數
Option Explicit Dim a, K%, i%, z%, ii% Public Const batfile As String = "D:\TOOLS\smbr.BAT" Public Const txtfile As String = "D:\TOOLS\windowssmb.txt" Sub UPDATEUSERS() Shell "cmd.exe /c " & " net user >" & txtfile, vbHide t = Timer + 0.3 Do Until Timer > t DoEvents Loop Sheets("SMB").Select Columns("A:A").Select Selection.ClearContents Range("A1") = "SMBUSERS" Open txtfile For Input As #1 a = Split(Replace(StrConv(InputB(LOF(1), 1), vbUnicode), " ", vbCrLf), vbCrLf) Close #1 K = UBound(a) z = 2 For i = 5 To K If a(i) <> "" And Application.WorksheetFunction.CountIf(Sheets("SPUSERS").Range("A:A"), a(i)) = 0 And a(i) <> "命令成功完成。" Then Cells(z, 1) = a(i) z = z + 1 End If Next Sheets("SMB").Select Open batfile For Append As #1 h = Range("A65535").End(xlUp).Row For i = 2 To h If Application.WorksheetFunction.CountIf(Sheets("DATA").Range("A:A"), Range("A" & i)) = 0 Then Print #1, "net user " & Range("a" & i) & " /DELETE" End If Next Sheets("DATA").Select h = Range("A65535").End(xlUp).Row For i = 2 To h If Application.WorksheetFunction.CountIf(Sheets("SMB").Range("A:A"), Range("A" & i)) = 0 Then Print #1, "net user " & Range("a" & i) & " " & Range("B" & i) & " /add /fullname:" & Chr(34) & Range("D" & i) & Chr(34) & " /comment:" & Chr(34) & Range("E" & i) & Range("F" & i) & Chr(34) Print #1, "NET LOCALGROUP Users " & Range("a" & i) & " /Delete" End If Next Close #1 End Sub