检查“保存更改为'文件名'提示W / VBA?

首先,这不关于saveasfilename对话框。

有没有办法有一个标志集检查,看看“想要保存您的更改到'filename.xsls'?对话框出现在VBA子?

基本上我有一个macros,将一些数据复制到另一个文件,显示一个MsgBox然后closures该文件和Excel应该提示用户确认该文件已保存。 不过,我有一个传统的程序,有时会locking该文件,导致提示不出现,它看起来像文件被保存,但实际上没有。 为了“解决”它,我必须closuresExcel和程序的所有实例,并重新开始。 这种情况并不经常发生,但是如果你不注意,或者在这个过程中没有经验的人不知道要确认他们被提示保存,那么你可能会错过它。

我想知道的是,如果有一种方法来检查/标志值,1/0,true / false等,以确保对话框出现。 如果没有,那么警告用户他们需要重新启动Excel和其他程序。 基本上我试图捕捉一个不应该发生的错误,所以这可能是无法解决的。

这是我指的对话框:

Excel保存更改对话框

有时它不会出现,因为该文件被locking,VBA子只是继续。

这可能会更好地解决其他问题,但由于你没有发布,我们不知道。 无论如何,你想要的一切都在这里描述: https : //support.microsoft.com/en-us/kb/213428

你可以从根本上做到这一点:

 Sub Auto_Close() If ThisWorkbook.Saved = False Then 'ThisWorkbook.Save this would autosave Application.GetSaveAsFilename 'this displays the save as dialog End If End Sub 

我最终做了这个工作,这不是真正的解决我的问题,虽然我怀疑有必要通过窗口类检查或一些东西的方法。 感谢所有花时间留神的人们,提供他们的智慧:)

我在子运行之前和之后为文件大小声明了两个variables。 如果文件大小相同,则出现一个msgbox,表示该文件可能没有被正确写入,或者覆盖了现有的文件。

 Dim ExportFileByte As Long Dim ExportBytePostFile As Long ExportFileByte = FileLen(ExportSourcePath) 

'(子运行在这里,并将一些数据的副本导出到.XLS文件)

 ExportBytePostFile = FileLen(ExportSourcePath) If ExportFileByte = ExportBytePostFile Then MsgBox ("Error: File may have not have saved, or file is being overwritten without changes (OK)")