0

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

问题是工作计算机很旧,Excel 有崩溃的趋势。当电子表格被自动恢复时,添加库存功能不再起作用,它会因代码 75 错误而崩溃。在这种情况下,ActiveWorkbook.Save 似乎不起作用,直到用户手动点击 CTRL-S。老板坚持认为我们的用户没有足够的计算机知识来管理这个,所以我需要以某种方式检查 Excel 是否已经崩溃,如果是这样,在他们开始使用之前自动保存文件。

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

4

1 回答 1

0

我找不到直接的方法来检查这个,但这里有几个 kludgy 选项。似乎如果有两种状态,自动恢复的工作簿可以处于的工作簿:用户上次保存或自动保存。标题反映了它所处的状态。此函数将检查标题中是否存在该短语。

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。好吧,他们在我的机器上是平等的。这可能只是一个巧合,但我对此表示怀疑。

由于用户上次保存的路径没有区别,因此您无法使用它来确定您是否处于自动恢复模式。但是,如果用户打开 Autosaved 工作簿,您可能不想只保存,而是希望在正确的位置另存为。您可能需要同时使用这两种技术来获得所需的解决方案。

确保你告诉你的老板这些变通办法,因为你非常勤奋和有创造力,但它们没有记录在案,并且随时可能失败。至少,我不会在不了解它们是基于一些猜测的情况下使用它们。让我们知道你最终会得到什么。

于 2013-04-05T17:14:45.373 回答