由于相同的条件,通过条件参数阻止保存而不阻止保存

  • 本文关键字:保存 条件 参数 于相同 excel vba save
  • 更新时间 :
  • 英文 :


我有一个我一直在做的模板。工作表使用我将要讨论的两个主要功能。首先是保存(func(,它将文档的副本保存到正确的文件夹中,同时保留模板。第二个是Rev Up功能,每当对模板进行更改时,都会保存一个新副本,以便保留旧副本。这两个功能都可以完美运行。

这些问题来自人为错误。打开模板时,很容易点击保存(在excel版本中不是我创建的VBA按钮(,或者在关闭模板时弹出"文件未保存",再次点击保存很容易。

当有人从桌面上工作时,他们通常会使用电子表格中的预归档,因为其中一些有很多重叠,与从模板开始相比,这可以节省大量工作。所以我的所有功能都必须保持活动状态。在处理工作表中的预配置文件时,这两个问题都会被放大,因为它们会导致很多错误和丢失工作。

为了解决这个问题,我添加了 3 个功能,这些功能都可以自行正常工作。

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

If Fileonly = Filename Then    
Else:
Cancel = True 'Cancels any request to save the file
MsgBox "File name does not match part number, Use Rev up button for format changes or use Save button to create new file!"
End If

我希望此代码在点击保存按钮时处于活动状态。然后将当前文件名与文件保存(func(时将提供给文件的名称进行比较。这段代码完全符合我想要它做的事情......等等。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then
ThisWorkbook.Saved = True
ActiveWorkbook.SaveAs Filename:=*backupfilelocation*
End If

此代码用于抑制"是否要保存更改",该文件将自身设置为已保存,然后如果您意外保存,它会将文件的副本保存到备份位置。同样,此代码完美运行。但是Saveas函数会触发beforesave代码。然后阻止保存文件。

我还有其他 2 个宏也保存了该文件。如何允许saveas工作,同时禁止保存功能,除非标题匹配。

> Workbook_BeforeClose 在保存工作簿之前发生,无论是"保存"还是"另存为..."如此处所述

因此,此过程将始终有效,只需放置一个 MsgBox 来下注 ThisWorkbook.Save 的值即可监视它。

如果您想真正"另存为..."由于您将始终触发此过程,因此它将添加"另存为..."备份保存后。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then
ThisWorkbook.Saved = True
ActiveWorkbook.SaveAs Filename:=*backupfilelocation*
End If
If ThisWorkbook.Saved = False Then ActiveWorkbook.SaveAs

因此,如果您使用"保存",将按预期工作,如果您使用"另存为...",它将创建一个 bckup 文件,但它将允许您正确保存。

希望对您有所帮助。

最新更新