0
我正在處理要在SharePoint上共享和打開的Excel工作表(不在瀏覽器中編輯)。據我所知,Excel中有一項功能可以將一系列單元格鎖定爲只能由指定的域用戶編輯。是否有可能使用宏鎖定每個用戶共享excel中的單元格?
我的問題是:是否有可能在宏中自動執行此鎖定機制,以便如果用戶編輯了空單元格,那麼它們將獲得所有權(因此除鎖定每個人之外,鎖定它們),並且如果它們清除細胞然後它變得對其他人解鎖?
我正在處理要在SharePoint上共享和打開的Excel工作表(不在瀏覽器中編輯)。據我所知,Excel中有一項功能可以將一系列單元格鎖定爲只能由指定的域用戶編輯。是否有可能使用宏鎖定每個用戶共享excel中的單元格?
我的問題是:是否有可能在宏中自動執行此鎖定機制,以便如果用戶編輯了空單元格,那麼它們將獲得所有權(因此除鎖定每個人之外,鎖定它們),並且如果它們清除細胞然後它變得對其他人解鎖?
好了,所以這是不是答案本身,但它是一個起點,我希望。這可以通過創建一個用戶可編輯範圍,並分配當前用戶權限來編輯該單元格。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim userName As String, ws As Worksheet, ual As UserAccessList, aer As AllowEditRange, usr As UserAccess, thisCell As String, rngName As String
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Unprotect
thisCell = Target.Address
rngName = Replace(thisCell, "$", "")
userName = Application.userName
userName = Replace(userName, " ", ".")
userName = userName & "@gmail.com"
On Error GoTo Handler
Set aer = ws.Protection.AllowEditRanges.Add(rngName, Range(thisCell), "pass1")
Set usr = aer.Users.Add(userName, True)
ws.Protect
Exit Sub
Handler:
MsgBox "Some error somewhere"
ActiveSheet.Protection.AllowEditRanges(rngName).Delete
End Sub
我只能使用我們的網絡電子郵件地址(我已經爲此示例的目的而更改)獲得此工作。它只在一個用戶上進行測試,不知道如果其他人編輯了相同的文件,它將如何工作。
大問題我可以預見,雖然是用戶保護範圍工作,工作表必須被鎖定,但如果鎖定了它,您將無法編輯其他單元格,除非您解鎖所有單元格,其中用戶受保護的單元格已過時。
您可以使用宏來創建用戶可編輯範圍,但是困難在於試圖將權限添加到這些用戶可編輯範圍時,看看這個http://www.java2s.com/Code/VBA-Excel - 訪問字/ EXCEL/AddEditRange.htm –