首先,这不是关于saveasfilename对话框。
是否有办法设置一个标记,以检查"是否要将更改保存到' filename.xsls'? VBA子过程中出现对话框?
基本上我有一个宏将一些数据复制到另一个文件中,显示一个MsgBox然后关闭文件,Excel应该提示用户确认该文件已保存。但是,我有一个遗留程序,有时锁定该文件,导致提示不出现,看起来文件已保存,但实际上并没有。要修复'我必须关闭Excel和程序的所有实例并重新开始。它并不经常发生,但是如果你没有注意或者在这个过程中经验不足的人不知道要检查以确保他们被提示保存,你就会错过它。
我想知道的是,是否有办法获得某种检查/标志值,1/0,真/假等,以确保出现对话框。如果它没有,则警告用户他们需要重新启动Excel和其他程序。基本上我试图捕捉一个永远不会发生的错误,所以这可能是无法解决的。
这是我所指的对话框:
有时它不会出现,因为文件被锁定而VBA sub只是继续。
答案 0 :(得分:0)
最好解决另一个问题,但由于你没有发布它,我们不知道。 无论如何,你想要的一切都在这里描述: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
答案 1 :(得分:0)
我最终做了这个作为一个解决方案,它并不是我的问题的真正解决方案,虽然我怀疑必须通过窗口类检查或其他方式来做到这一点。感谢所有花时间参与并提供智力的人:)
我在子运行之前和之后为文件大小声明了两个变量。如果文件大小相等,则会出现一个msgbox,表示文件可能未正确写入,或者您正在覆盖现有文件。
Dim ExportFileByte As Long
Dim ExportBytePostFile As Long
ExportFileByte = FileLen(ExportSourcePath)
'(sub运行此处并将某些数据的副本导出到.XLS文件)
ExportBytePostFile = FileLen(ExportSourcePath)
If ExportFileByte = ExportBytePostFile Then MsgBox ("Error: File may have not have saved, or file is being overwritten without changes (OK)")