2016-04-28 33 views
0

我正在處理要在SharePoint上共享和打開的Excel工作表(不在瀏覽器中編輯)。據我所知,Excel中有一項功能可以將一系列單元格鎖定爲只能由指定的域用戶編輯。是否有可能使用宏鎖定每個用戶共享excel中的單元格?

我的問題是:是否有可能在宏中自動執行此鎖定機制,以便如果用戶編輯了空單元格,那麼它們將獲得所有權(因此除鎖定每個人之外,鎖定它們),並且如果它們清除細胞然後它變得對其他人解鎖?

+0

您可以使用宏來創建用戶可編輯範圍,但是困難在於試圖將權限添加到這些用戶可編輯範圍時,看看這個http://www.java2s.com/Code/VBA-Excel - 訪問字/ EXCEL/AddEditRange.htm –

回答

0

好了,所以這是不是答案本身,但它是一個起點,我希望。這可以通過創建一個用戶可編輯範圍,並分配當前用戶權限來編輯該單元格。

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 

我只能使用我們的網絡電子郵件地址(我已經爲此示例的目的而更改)獲得此工作。它只在一個用戶上進行測試,不知道如果其他人編輯了相同的文件,它將如何工作。

大問題我可以預見,雖然是用戶保護範圍工作,工作表必須被鎖定,但如果鎖定了它,您將無法編輯其他單元格,除非您解鎖所有單元格,其中用戶受保護的單元格已過時。

相關問題