1. 程式人生 > >EXCEL+VBA 管理windows用戶 文件服務器用戶 新增或刪除用戶

EXCEL+VBA 管理windows用戶 文件服務器用戶 新增或刪除用戶

smb tool 51cto close exe loop com 實現 bound

1.調用DOS命令:net user 獲取系統用戶到txtfile
2.打開txtfile把內容處理(空格全替換為換行;已換行分列)後賦值到A
3.把A列不為空的值且不到特殊用戶表的值寫到臨時表
4.與EXCEL用戶表進行對比 使用函數COUNTIF
(1)臨時表有,用戶表沒有——編寫刪除用戶命令: "net user " & Range("a" & i) & " /DELETE"

(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文件;

5.執行batfile腳本,實現windows用戶與EXCEL用戶同步;

視頻教程制作中:https://edu.51cto.com/lecturer/6969164.html

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

EXCEL+VBA 管理windows用戶 文件服務器用戶 新增或刪除用戶