我在Excel中有一个用户窗体,用户在其中输入信息,然后点击“添加股票”按钮。按下此按钮后,信息将输入电子表格,然后电子表格将以“ActiveWorkbook.Save”保存。
问题是工作计算机是旧的,Excel有崩溃的倾向。当电子表格被自动恢复时,添加股票功能不再有效,它会因代码75错误而崩溃。似乎ActiveWorkbook.Save在这种情况下不起作用,直到用户手动命中CTRL-S。老板坚持认为我们的用户不够精通计算机,所以我需要以某种方式检查Excel是否已经崩溃,如果是这样,他们会在开始使用之前自动保存文件。
我如何检查我们是否处于自动恢复状态,然后保存它(没有ActiveWorkbook.Save)以便用户可以继续使用该表单而不会出现问题?非常感谢。
答案 0 :(得分:0)
我找不到直接的方法来检查这个,但这里有几个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。好吧,他们在我的机器上是平等的。这可能只是巧合,但我对此表示怀疑。
由于用户路径保存的上次保存不是特色,因此您无法使用它来确定您是否处于自动回复模式。但是,如果用户打开自动保存的工作簿,您可能不希望仅保存,而是在正确的位置另存为。您可能需要使用这两种技术来获得所需的解决方案。
确保告诉你的老板这些解决办法,因为你是如此勤奋和有创造力,但他们没有记录,可能随时都会失败。至少,如果不理解他们是基于一些猜测,我就不会使用它们。让我们知道你最终会得到什么。