我设法压制"另存为"转到文件的方法>保存方式如下:
Private Sub Workbook_BeforeSave _
(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
End Sub
我已将文件设为只读,因此"保存"选项阻止他们以这种方式保存。
但是,如果他们对工作簿进行了更改,系统会提示他们保存更改。点击"是"将提出"另存为"提示。
我的最终目标是阻止他们在这张纸上保存,或者能够在任何地方保存纸张的副本。我希望他们能够打开工作表,使用它的功能/功能,就是这样。
VBA受密码保护。
他们将通过快捷方式访问它,该文件不在他们的机器上(我知道创建了本地副本,这是我的下一个挑战)文件本身将位于由Active Directory控制的服务器上。
答案 0 :(得分:2)
由于我们似乎同意Excel不提供任何真正的保护,这可能是您正在寻找的:
(1)确保用户在文件关闭时没有收到有关保存更改的问题。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Close SaveChanges:=False
End Sub
(2)确保用户无法打印Excel文件:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub
(3)您甚至可以在停用文件时自动关闭该文件,以确保他们不会创建一个新的Excel文件,在该文件中他们会引用您的" protected"文件:
Private Sub Workbook_Deactivate()
ThisWorkbook.Close SaveChanges:=False
End Sub
请注意,您不能/不应该将所有潜艇一起使用,因为它们是相互依赖的。因此,如果您使用带有事件BeforeClose
的选项(1)关闭文件,则子Deactivate
将失败,因为没有打开的Excel文件可以关闭(反之亦然)。