当共享工作簿中某处存在下拉菜单、重新打开时崩溃或多个用户正在协作时,Excel 无法保存共享工作簿

问题描述 投票:0回答:1

我正在使用 Excel 365 与我的团队共享文件,该文件存储在 SharePoint 上。这是一个

.xlsm
文件,因为它包含多个宏。用户必须在 Microsoft Excel 应用程序中本地打开文件才能使宏起作用,这不是问题,而且它们工作得很好。我有一个 VBA 宏,可以在某些单元格中创建下拉菜单(称为 Excel 数据验证),用于向用户建议值(主要是字符串)。

但是,当工作簿中某处出现下拉菜单时,文件会系统性冻结,Excel 最终崩溃(详细信息如下)。我已经缩小了问题范围,几乎完全确定它仅取决于我的文件中是否存在下拉菜单。

作为参考,我用来创建下拉菜单的 VBA 代码始终相同,它工作得很好,就是这样(只有范围和数组不同):

With Range(<some_coordinates>).Validation
  .Delete
  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(<an_array>, ",")
  .IgnoreBlank = True
  .InCellDropdown = True
  .ShowInput = True
  .ShowError = False
End With

此代码由工作表模块中的事件处理程序 (

Worksheet_Change(ByVal Target As Range)
) 触发,它还会触发其他操作,例如单元格颜色格式或自动填充某些单元格,并且似乎不会导致任何问题。 我确保在事件开始时使用这些行来避免无限循环:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

脚本末尾有这些:

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

在这之间,我使用一些线条来填充单元格,如下所示:

Cells(row, col).Value = an_array(0)
Cells(row, col).Value = an_array(1)

我也像这样更改格式:

cell.Interior.Color = RGB(255, 255, 155)

总体而言,所有这些工作正常,应用程序不会冻结,VBA 不会崩溃或陷入无限循环,并且可以进行协作,除非文件中存在下拉菜单。 请在下面找到有关我的问题的详细信息。

协作处理文件时

当 2 人或更多人处理在 Excel 应用程序本地打开的文件时,一切似乎都工作正常。但是,当其中一个用户创建下拉菜单(通过宏)时,所有其他用户都会收到以下错误消息:

您的文件未上传,因为您的更改无法与其他人所做的更改合并。

收到此消息后,所有其他用户的 Excel 都会冻结,并最终崩溃。其余用户可以保存并关闭文件,并且每当有人重新打开文件时,都会发生相同的问题,如单独处理文件时中所述。

独自处理文件时

单独处理文件时,宏可以正常工作,包括下拉菜单。我什至可以保存文件,但 Excel 却什么也没说。
但是,当我重新打开文件时,出现以下错误:

我们发现“”中的某些内容存在问题。您希望我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”。

当我单击“是”时,我收到以下消息:

Excel 能够通过修复或删除不可读的内容来打开文件。

这将创建文件的“已修复”版本,没有下拉菜单,并且可以保存并稍后重新打开。


我尝试删除下拉菜单,它解决了问题(这就是为什么我相信它们导致了问题)。我尝试使用该文件的在线版本,但在我的情况下没有任何意义,因为宏在 Excel 在线中不起作用。

那么,有没有办法在共享 Excel 文件中使用和保存下拉菜单?

excel vba drop-down-menu office365
1个回答
0
投票

我找到了这个问题的解决方法,所以如果有人需要的话不妨在这里分享。

正如我所说,当多人使用该文件时,下拉菜单会使应用程序崩溃,但其他宏则不会出现这种情况。 经过(大量)调试,我们发现问题出在下拉菜单的大小(元素数量)上。如果下拉菜单太大,服务器似乎无法将修改“推送”给其他用户。

因此,简单的解决方法是限制下拉列表中出现的元素数量,尽管这可能很不方便(在我的情况下并不算太多)。
然后,当使用宏时,一切正常,并且其他人也进行了更改。保存并重新打开文件时,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.