Excel崩溃,VBA用户表单无法保存

问题描述:

我在Excel中有一个用户表单,用户在其中输入信息,然后点击“添加股票”按钮。按下此按钮后,信息将输入到电子表格中,然后电子表格将保存为“ActiveWorkbook.Save”。Excel崩溃,VBA用户表单无法保存

问题是,工作电脑老了,Excel有崩溃的倾向。当电子表格被autorecovered,添加股票功能不再起作用,它崩溃与代码75错误。看来ActiveWorkbook.Save在这种情况下不起作用,直到用户手动点击CTRL-S。老板坚持认为,我们的用户不够精通计算机,因此我需要以某种方式检查Excel是否崩溃,如果是这样,自动保存文件才能开始使用它。

如何检查我们是否处于自动恢复状态,然后保存它(没有ActiveWorkbook.Save),以便用户可以继续使用该表单而没有问题?非常感谢。

+0

VBA错误75是文件/路径访问错误,通过崩溃您的意思是VBA暂停?如果是这样,请在存储方法周围添加错误处理 – 2013-04-05 11:26:40

+0

否,Excel有整个崩溃的习惯,整个应用程序强制重新启动,然后自动恢复过程。 – user2151763 2013-04-05 11:32:28

+0

而这与用户表单是否在使用中无关。 – user2151763 2013-04-05 11:33:15

我找不到一个直接的方法来检查这个,但这里有几个kludgy选项。看起来如果有两个状态,一个Autorecovered工作簿可以在其中的工作簿:最后由用户保存或自动保存。标题反映它处于哪个状态。此功能将检查标题中是否存在该短语。

Public Function IsInAutoRecoverMode(wb As Workbook) 

    Dim wn As Window 

    Set wn = wb.Windows(1) 

    IsInAutoRecoverMode = _ 
     wn.Caption Like "*[Autosaved]?" Or _ 
     wn.Caption Like "*[Last saved by user]?" 

End Function 

我不知道如果有更多的国家,仅仅这一点,这肯定会失败在非英语环境中,所以请谨慎使用。

上次由用户保存时,Workbook.Path属性是存储文件的位置。自动保存时,Workbook.Path属性等于Application.AutoRecover.Path。那么,他们在我的机器上是平等的。这可能只是一个巧合,但我怀疑它。

由于用户路径最后保存的内容不具有独特性,因此无法使用它来确定您是否处于自动恢复模式。但是,如果用户打开自动保存的工作簿,则可能不想保存,而是将其另存为正确的位置。您可能需要使用这两种技术才能获得所需的解决方案。

确保你告诉你的老板,这些解决方法因为你非常勤奋和具有创造性,但他们没有记录,并可能在任何时候失败。至少,我不会理解他们是基于一些猜测而使用他们。让我们知道你最终会得到什么。