繁体   English   中英

确保用户在开始编辑内容时打开工作簿进行编辑

[英]Ensuring that user has workbook open for editing when they start editing things

我在工作 Intranet SharePoint 服务器上有一个工作簿,我想在用户第一次编辑某些内容时提醒他们,如果他们不是打开它进行编辑的人。 如果不是,我想关闭工作簿并打开它进行编辑。

Public CheckedIfThisUserEditing As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim UserInput As VbMsgBoxResult
    Dim WorkbookAddress As String
    If Not CheckedIfThisUserEditing = True Then
        CheckedIfThisUserEditing = True
        If Not Application.UserName = ThisWorkbook.WriteReservedBy Then
            UserInput = MsgBox("You don't have this workbook open for editing, open workbook for editing?", vbYesNo + vbDefaultButton1 + vbExclamation, "Not open for editing")
            If UserInput = vbYes Then
                WorkbookAddress = ThisWorkbook.FullName
                Call ThisWorkbook.Close(False)
                Call Workbooks.Open(WorkbookAddress, False, False, , , , , , , True, True)
            End If
        End If
    End If
End Sub

现在它会关闭工作簿,但不会将其打开以进行编辑。 不知道从这里去哪里。 我想确保他们拥有来自服务器的最新副本,并且不会编辑旧数据然后覆盖其他人在打开但未保留写入时发生的更改。

不是 100% 确定为什么ThisWorkbook.LockServerFile想要在其他人正在编辑时抛出错误,但我认为这可以解决问题。

Public Sub EditGuard()
    On Error Resume Next
    If Not CheckedIfThisUserEditing = True Then
        CheckedIfThisUserEditing = True
        If Not Application.UserName = ThisWorkbook.WriteReservedBy Then
            ThisWorkbook.LockServerFile
            If Not Application.UserName = ThisWorkbook.WriteReservedBy Then Call MsgBox("You don't have this workbook open for editing.", vbOKOnly + vbDefaultButton1 + vbExclamation, "Not open for editing")
        End If
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM