【发布时间】:2021-09-17 18:05:06
【问题描述】:
我正在使用一小段代码在保存工作簿之前导出 VBProject 组件。
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Wb.HasVBProject Then
If Wb.VBProject.Protection = vbext_pp_none Then
If vbYes = MsgBox("Do you want to export the VBProject components?", vbYesNo) Then
ExportWB Wb ' call a function to export the data
End If
End If
End If
End Sub
此代码运行良好,但如果自动保存在用户(我)上,每隔几秒就会询问它是否要导出项目。
我可以使用Wb.AutoSave 检查自动保存是打开还是关闭,但是有没有办法检查事件是手动触发还是通过自动保存触发的,以便仅在有人需要保存时运行代码,而不是自动保存事件?
文森特
【问题讨论】:
-
@SiddharthRout 该链接似乎并不直接相关。唯一的答案是“Excel 2003/2007 中没有自动保存”。我不知道版本历史,但这里的问题似乎涉及 10 年前不存在的东西。
-
Microsoft 文章How AutoSave Impacts add-ins and macros 听起来不太令人鼓舞。它概述了许多潜在问题并讨论了各种解决方法。在任何情况下,它都没有建议检查保存事件是否是自动触发的,即使在某些情况下可能会有所帮助。
-
@JohnColeman 我试图说明的一点是,自动恢复保存不是真正的工作簿保存。你不能从
WorkbookBeforeSave捕获它。您必须按照该链接中的建议进行操作。关闭工作簿的自动保存,然后滚动您自己的自动保存。 -
@SiddharthRout 但是似乎 OP 根本不是在谈论 AutoRecovery,而是在谈论一个 AutoSave,它 is 被
WorkbookBeforeSave困住了,问题在于当 OP 不希望它被困住时,它就被困住了。