【发布时间】:2016-12-03 16:30:04
【问题描述】:
在我们开始之前:请不要质疑我为什么要使用它们或抱怨共享工作簿,因为它们会损坏、崩溃和损坏等等,不幸的是,这是这种情况的必要条件。
我已经解决了几乎所有的问题,并将大部分代码发布在 Stack Exchange 上。我有超过 10 个月的时间平稳运行,没有任何问题,每天有大约 100 名用户使用它们进行数千次更改。
我现在要解决最后一个问题,即阻止用户保存工作簿的副本或在断开连接时覆盖工作簿。
如果用户已断开连接,那么我会取消任何保存尝试。
如果用户断开连接,我尝试修改以下代码以取消保存,但即使共享工作簿,每次都失败:
How to check whether the current user has been removed from the shared workbook?
我尝试创建一个仅包含上述代码的工作簿,以确定它是否来自我的主要工作簿中的另一部分代码,但它仍然失败。
是否有其他人知道如何在 vba 中确定用户是否断开连接以取消保存?
是否存在与弹出窗口相关的错误代码,提示您不再连接到此工作簿,然后要求您将工作簿另存为副本?
断开连接的用户 excel 是否会将工作簿视为只读?
【问题讨论】:
-
您可能必须使用在 ThisWorkbook 下找到的
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) _ code here _ End Sub。而且您必须以某种方式检查此处的连接性,如果失败,则不应允许用户保存。 -
BeforeSave 事件将是:-)
-
是的,我正在使用之前的保存事件,但我不知道要测试什么来测试连接性,似乎并没有消失。也许我可以检查一下工作簿是否有任何尚未应用的更改我知道有一个命令
-
我以为我已经弄明白了,但我没有。因为当您在 beforesave 事件上检查连接性时,已经为时已晚。我猜你必须使用 change 事件,所以每次用户更改某些内容时,它都会检查连接并通知你是否在线。
-
嗯,好的,我接下来会测试一下