Excel 如何检查当前用户是否已从共享工作簿中删除?

Excel 如何检查当前用户是否已从共享工作簿中删除?,excel,vba,share,Excel,Vba,Share,我有一个共享文档,它在关闭时运行各种命令。这包括正常保存(如果文档仍然共享)和保存为共享(如果文档未共享) 当一个人打开文档一段时间,然后关闭文档时,就会出现问题。文档会自动覆盖当前文档(如果文档被设置为非共享,或者当.save命令运行时,文档会提供覆盖选项),同时输入的数据可能会丢失 如何检查用户是否已从文档中删除,以便在这种情况下跳过保存部分 Private Sub Workbook_BeforeClose(Cancel As Boolean) For i = 1 To Sheet

我有一个共享文档,它在关闭时运行各种命令。这包括正常保存(如果文档仍然共享)和保存为共享(如果文档未共享)

当一个人打开文档一段时间,然后关闭文档时,就会出现问题。文档会自动覆盖当前文档(如果文档被设置为非共享,或者当.save命令运行时,文档会提供覆盖选项),同时输入的数据可能会丢失

如何检查用户是否已从文档中删除,以便在这种情况下跳过保存部分

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    For i = 1 To Sheets.Count     
        If Sheets(i).ProtectContents = False Then
            Call Protect_Sheets 'Protects all the sheets
        End If
    Next i

    If ActiveWorkbook.ProtectStructure = False Then
        Call Protect_Workbook 'Protects the workbook
    End If

    If ActiveWorkbook.MultiUserEditing = False Then
        Call SaveAsShared 'Saves the workbook as shared (overrides)
    Else
        ActiveWorkbook.Save 'Only saves as normal when the document was shared upon close (but defaults the current document name (which will override when no attention is paid))
    End If

End Sub
如果可能的话,我需要另一个“If”(就在调用saveAshared函数之前),当用户从工作簿中删除时,它会终止Sub。 任何帮助都将不胜感激! 提前谢谢


我遇到了一个临时解决方案。我使用一个命令(ShowConflictHistory),当您被踢出文档时返回一个错误,然后我使用错误处理技术保存一个唯一的副本

On Error GoTo Errhandler:
If ActiveWorkbook.ShowConflictHistory = False Or True Then 'This returns Err 1004 if the person has been kicked from the workbook, so it can be handled accordingly in ErrHandler.
End If

Continue1: 
On Error Resume Next

'''''''''
'Main code section
'''''''''

Exit Sub

Errhandler:

Select Case Err
     Case 1004: 'The error which results if you've been kicked out of the document.
        Call SaveCopyOfShared
        Exit Sub    
     Case Else:
        GoTo Continue1:
End Select

End Sub

如果有人想出一个更传统的解决方案。请让我知道。

如果用户已从文档中删除,他们是否知道已删除,他们的文档临时版本是否知道?如何检查临时版本是否仍连接到文档?我不知道当你被踢出文档时,文档会发生什么情况。。。此外,我会插入一个消息框,告诉他们如果是这样的话,他们已经被删除了。(顺便说一句,非常感谢您查看此内容)如果您可以告诉他们何时断开连接,如果您将本地版本保存在某个位置,以便在需要将其添加到主文档时不会丢失所做的更改,此外,退出时的所有代码都可以正常运行,因为当它执行工作簿.save时,它将只保存在删除时创建的版本上。谢谢您的建议。但是,这不起作用,因为文档不断变化(为什么副本不起作用)。我只是需要一些东西来帮助我区分一个被踢过的人的项目和一个没有被踢过的人的项目,这样子项目在被检测到时就会终止。所以我认为这是可行的,但实际上即使共享工作簿也会失败。