Excel数据验证损坏了工作表(何时复制?)

时间:2018-11-02 12:29:05

标签: vb.net validation excel-2016 corruption comaddin

编辑:

我进一步研究了这个问题,现在有了一个最小的文件,可以在其中复制错误/错误。所有加载项均已停用,我仅使用4行VBA代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Tabelle15.Range(Target, Target.Offset(1, 0)).EntireRow.Copy
        Target.Offset(2, 0).EntireRow.Insert
End Sub

该文件有2张纸,上面有格式设置,数据验证,轮廓(3级)和一些数据。

我如何破坏文件:

  • 打开文件
  • 在大纲级别2上单击3次(->隐藏一些行)
  • 在大纲级别3(->隐藏行)上单击3次
  • 双击单元格以通过VBA代码复制两行
  • 关闭文件
  • 重复直到文件损坏(有时需要10次或更多次循环,有时文件在1次循环后损坏)

文件中已损坏的工作表中没有任何代码,并且在这些循环中未激活。这是损坏的数据验证的前后:

腐败前:

<dataValidation type="list" allowBlank="1" showInputMessage="1" showErrorMessage="1" sqref="D11 D13 D15 D9">

腐败后:

<dataValidation type="list" allowBlank="1" showInputMessage="1" showErrorMessage="1" sqref="D11:A11 1:A90 A16384:D4294967295 D9">

我仍然不知道为什么会这样。如果有人遇到相同的问题或知道解决方法,从而不会发生损坏,那将很有趣。 (我尝试了显而易见的Application.Screenupdating,Application.Wait等...)

编辑结束---

不幸的是,我无法说出何时发生此问题,因为我只会得到最终损坏的工作簿。

我们已经在VB.net中编写了一个用于Excel的COM-AddIn,它可以完成所有事情(例如,复制特定结构中的单元格和工作表,与SQL-DB的数据连接,保存工作簿...)

现在我从AddIn的用户那里得到了一些损坏的工作簿。问题是用户正在使用文件,没有问题。仅在保存,关闭并重新打开文件后,Excel才会显示是否应修复文件的问题。根据文件类型(我们使用* .xlsx和* .xlsb),Excel“修复”文件并从1张纸上删除所有格式-在* .xlsb中它无法修复并完全打开。

浏览xmlSheet文件后,我发现损坏发生在dataValidation-Tags中。有时不在一个特定的数据验证中,有时不在另一个中。

损坏的dataValidation标签看起来像这样:

<dataValidation type="list" allowBlank="1" showInputMessage="1" showErrorMessage="1" sqref="S26:26 1:A523 A16384:S4294967295 S32"><formula1>"Item1,Item2,Item3"</formula1></dataValidation>

修复数据验证或文件不是问题。现在,我可以恢复工作簿了。我的主要问题是找不到导致此问题的原因的任何线索。

在工作表上执行的大多数操作是复制和插入(而非粘贴)整行。在有时会损坏的一张纸上,只有“复制自”,而没有粘贴或插入到该纸上。似乎文件的一般性能也会影响问题发生的频率。

由于我无法给出发生此损坏的任何代码,因此我不希望在此处找到解决方案,但是也许有人遇到类似的问题,并且有提示可以向我显示正确的方向。

其他信息:该问题发生在不同的计算机上。我没有设法重现腐败过程。据我所知,该问题仅发生在Excel 2016上,但我不能排除早期版本破坏文件的原因相同。我检查(至少在某些机器上)已安装Office和Windows的所有更新。数据验证中的公式(少于)少于255个字符。在损坏的工作表上,没有与数据库的数据连接。

任何想法或提示都值得赞赏!

0 个答案:

没有答案