检查“保存更改为'文件名'提示W / VBA?
首先,这不关于saveasfilename对话框。
有没有办法有一个标志集检查,看看“想要保存您的更改到'filename.xsls'?对话框出现在VBA子?
基本上我有一个macros,将一些数据复制到另一个文件,显示一个MsgBox然后closures该文件和Excel应该提示用户确认该文件已保存。 不过,我有一个传统的程序,有时会locking该文件,导致提示不出现,它看起来像文件被保存,但实际上没有。 为了“解决”它,我必须closuresExcel和程序的所有实例,并重新开始。 这种情况并不经常发生,但是如果你不注意,或者在这个过程中没有经验的人不知道要确认他们被提示保存,那么你可能会错过它。
我想知道的是,如果有一种方法来检查/标志值,1/0,true / false等,以确保对话框出现。 如果没有,那么警告用户他们需要重新启动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)")