用户进行更改后停止“另存为”提示,然后关闭工作簿

时间:2017-11-09 10:29:54

标签: excel-vba vba excel

我设法压制"另存为"转到文件的方法>保存方式如下:

Private Sub Workbook_BeforeSave _
               (ByVal SaveAsUI As Boolean, Cancel As Boolean)

    If SaveAsUI = True Then Cancel = True

End Sub

我已将文件设为只读,因此"保存"选项阻止他们以这种方式保存。

但是,如果他们对工作簿进行了更改,系统会提示他们保存更改。点击"是"将提出"另存为"提示。

我的最终目标是阻止他们在这张纸上保存,或者能够在任何地方保存纸张的副本。我希望他们能够打开工作表,使用它的功能/功能,就是这样。

VBA受密码保护。

他们将通过快捷方式访问它,该文件不在他们的机器上(我知道创建了本地副本,这是我的下一个挑战)文件本身将位于由Active Directory控制的服务器上。

1 个答案:

答案 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文件可以关闭(反之亦然)。