【发布时间】:2016-04-19 14:03:55
【问题描述】:
首先,这与 saveasfilename 对话框无关。
有没有办法设置一个标志来检查“想要保存对'filename.xsls'的更改?”对话框是否出现在VBA sub 期间?
基本上我有一个宏将一些数据复制到另一个文件中,显示一个 MsgBox 然后关闭文件,Excel 应该提示用户确认文件已保存。但是,我有一个遗留程序有时会锁定该文件,导致提示不出现,看起来文件已保存但实际上没有。要“修复”它,我必须关闭 Excel 和程序的所有实例并重新开始。它不会经常发生,但如果您不注意或在此过程中经验较少的人不知道检查以确保他们被提示保存,您可能会错过它。
我想知道的是,是否有某种方法可以设置某种检查/标志值、1/0、真/假等,以确保对话框出现。如果没有,则警告用户他们需要重新启动 Excel 和其他程序。基本上我试图捕捉一个永远不会发生的错误,所以这可能是无法解决的。
这是我指的对话框:
有时它不会出现,因为文件被锁定并且 VBA 子程序继续运行。
【问题讨论】:
-
如果 sub 有
Application.DisplayAlerts = False那么它将禁止任何此类消息框。 -
我没有任何那种类型的代码。该对话框应该总是出现,除了遗留程序锁定文件的罕见情况外,它确实会出现。代码只是“ExportDestFile.Close”
-
您是否有原因只是关闭文件而不使用
Workbook.Save或Workbook.SaveAs?或者至少将 true 传递给Workbook.Close?例如,Workbook.Close True将保存更改然后关闭工作簿。恕我直言,最好尽可能明确。 -
原因是代码只是将一些数据从主文件复制到导出文件并关闭它,但是执行该过程的人需要直观地查看它是否真的复制了任何东西。我在关闭之前有一些代码计算每行中的行数并在消息框中显示计数,但这一切都无关紧要,因为问题不在于 sub 或 Excel,而是第三方遗留应用程序锁定文件.我认为人们认为这是一个 Excel/代码问题,但我需要做的就是检查是否有办法查看该对话框是否出现。
-
Soulfire 我明白你在说什么,这听起来确实是一种更好的方法,但这并不重要,因为文件已被锁定,无论使用何种方法都无法保存VBA“保存”