【问题标题】:What happens when multiple users save an "unshared" workbook on a shared drive?当多个用户在共享驱动器上保存“非共享”工作簿时会发生什么?
【发布时间】:2014-03-30 21:25:21
【问题描述】:

如果几个人运行一个使用 Workbooks.Open() 的 VBA 宏,该宏在共享网络驱动器上打开同一个工作簿,对其进行更改,然后保存它,我应该期待什么行为?假设所有 5 个宏都尝试同时进行保存?

以这种方式编辑的工作簿不是“共享工作簿”。

所需的行为是最后一个要处理的保存会保留,覆盖之前处理的保存产生的任何冲突更改。

有什么我需要担心的错误吗? Window的文件系统会对此有任何问题吗?这可能会导致应用程序或操作系统崩溃吗?

背景: 我正在开展一个项目,公司中有 4-5 人希望同时更新工作簿。他们在使用 excel 的“共享工作簿”设置时遇到了很多问题;具体来说,他们不想打扰它处理冲突解决的方式。我能想出的最快解决方案是让他们使用单独的工作簿,这些工作簿与他们共享驱动器上的主工作簿同步。我将对其进行设置,以便同步只会将现有记录中的记录或修改列添加到主工作簿。修改将通过使用由工作簿中的三列组成的自然键来处理,以识别本地和主工作簿中的相应记录,因此我不必担心这些记录是否在同一编号行上。

谢谢!

【问题讨论】:

  • 最好使用 Jet 等内置事务日志的后端数据库。
  • 我可能会走那条路,但我想探索我所有的选择,我很好奇 excel/windows 将如何处理这个用例。
  • 打开非共享工作簿(无论是通过 VBA 还是手动)都会将该工作簿锁定给该用户。正如@CharlesWilliams 指出的那样,您确实需要一个后端数据库来以一种可以“共享”而不会发生冲突的方式收集数据。如果需要,可以稍后将数据推送/拉取到 Excel。
  • 如果工作簿被锁定给该用户,其他用户的 Workbooks.Open() 请求是否会阻塞,直到该锁定被释放?
  • 锁定后其他用户只能打开只读副本。这甚至不会开始在您的场景中起作用。对于您的方案,您应该使用 Excel 作为后端共享数据库的前端。

标签: windows vba excel


【解决方案1】:

第一个打开它的用户会锁定它,然后其他用户只能打开一个只读副本。这甚至不会在您的场景中开始工作。
对于您的场景,您应该使用 Excel 作为后端共享数据库的前端

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多