我有一个工作的表格,我每天更新和电子邮件。我打开一个主表单(“第三班帕斯登报告”),并在每天离开前将其单独保存为按日期分隔的副本(“第三班报告”2022-01-19")。
表单中充满了基于日的自动更新的公式,并且基于工作簿中其他工作表的刺激,所以我添加了一个宏来将范围内的所有公式转换为它们的值。
在将表单保存为每日文件之前,我希望运行此宏,但在简单地更新和保存主文件时则不这样做。那是我能做的吗?
发布于 2022-04-05 13:38:34
关闭工作簿前运行宏
SaveAs作为备份。只有在关闭备份时,IF(StrComp...才会注意到不同的文件名,并且宏将在关闭前再次运行,备份将再次保存。BeforeSave的问题是您可以执行If SaveAsUI = True Then,但是您也可以不小心地对原始代码执行SaveAs,并将其销毁。我认为这太冒险了。--Option Explicit
Private ClosingBackup As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Const sFileName As String = "Passdown Report 3rd Shift.xlsm"
If Not ClosingBackup Then
With Me
' Compare if you're closing the original or the backup.
If StrComp(.Name, sFileName, vbTextCompare) <> 0 Then ' backup
MyMacro
ClosingBackup = True
' Here it will again call this sub but will exit because
' 'ClosingBackup' is set to True ('If Not ClosingBakup Then').
.Close SaveChanges:=True
'Else ' ClosingBackup = False i.e. closing the original; do nothing
End If
End With
'Else ' ClosingBackup = True; closing the backup which was saved; do nothing
End If
End Sub发布于 2022-04-05 06:27:16
您可以在您的BeforeSave上使用函数ThisWorkbook。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI then
'Your code
end if
End Sub在microsoft文档中,在SaveAs的弹出窗口中,将执行这段代码,标志SaveAsUI为true。
https://learn.microsoft.com/en-us/office/vba/api/excel.workbook.beforesave
注意:如果要保存宏,则需要将其设置为.xlsm文件.
https://stackoverflow.com/questions/71747005
复制相似问题