每20秒节省一次。导致1004错误

时间:2018-01-18 18:50:06

标签: excel vba excel-vba save runtime-error

我在共享驱动器上有一个excel doc,每20秒保存一次活动工作簿。

Sub Save()
   ActiveWorkbook.Save
   Application.OnTime Now + TimeValue("00:00:20"), "Save"
End Sub

当一个或两个用户使用它时,它可以正常工作。但是,如果三个或更多用户正在使用它,那么它就会开始抛出

  

运行时错误1004文件被锁定

我相信这种情况正在发生,因为该文档已经被其他用户保存了。有没有办法解决这个错误?例如,有没有办法查看另一个用户是否使用VBA保存到共享工作簿?

或者,如果其他用户对文档进行了更改,是否有办法触发保存事件?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我相信您可以右键单击工作表选项卡,然后选择"查看代码"。在此窗口中,您应该能够输入以下内容:

balances.stream().collect(Collectors.toMap(
    Balance::getAccountId, 
    dailyReturn, 
    BigDecimal::multiply
));

还有用于检查它是否已被锁定的代码,因此如果您想将上述内容与计时器(如果它被锁定)结合起来,那么您可以执行类似的操作。 ..

Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveWorkbook.save
End Sub

编辑:MoondogsMaDawg提出了一个很好的观点。我已更新代码以选择1-10秒之间的随机值(可随意更改)。

编辑#2:找到一个更好的解决方案来获得独家访问并保存它,所以它不应该检查它是否被锁定。

注意:我不经常创建Excel宏,请原谅我的错误。

来源:MrExcel run-time-error