Microsoft Excel 无缘无故地不断修复我的 .xlsm 文件,并消除了工作表上的数据验证

问题描述

我最近创建了一个自动化 Excel 实用程序(使用 Microsoft Office 2019),我在其中广泛使用了数据验证、VBA 代码、命名范围和格式。它运行良好,直到有一天我收到一条 Excel 提示消息,内容如下:

enter image description here

当我点击 Yes 时,它会给我另一个弹出窗口,上面说它恢复了文件,还给了我一个指向错误日志 XML 文件链接。我点击它并使用我的认浏览器打开 .xml 文件,它显示了以下详细信息:

enter image description here

看起来它正在从特定工作表中删除数据验证,当我在 UI 中导航到该工作表时,我意识到这是真的。为了解决 Excel 应用程序强制执行的这种无根据和重复的数据验证删除,我创建了一个代码,它将根据需要重新设置所有这些数据验证。当使用 Microsoft Office 365 在另一台计算机上打开此 Excel 文件时,会出现真正的问题。看起来它不仅删除了数据验证,还删除了其他组件,如命名范围和按钮。它可能会删除其他一些东西,我目前不知道。因此,为重新设置数据验证而创建的宏不再有用。

为什么会出现这个问题?为什么不同版本的 Excel 表现不同?我该如何解决这个问题?感谢您的帮助。谢谢!

解决方法

正如 Ron Rosenfeld 和 e_conomics 正确建议的那样,问题在于数据验证列表,其来源是超过 255 个字符的逗号分隔值字符串。显然,这是 Excel 的一个限制。

当我用包含相应值的范围替换数据验证列表的来源(逗号分隔值的字符串)时,问题自行解决。修复对话框再也没有出现过。