我在加载电子表格时遇到此错误。它让我修复它,它剥离了所有的验证器。该文件保存为xlsm。
“Excel在''您是否想要恢复此工作簿的内容时发现不可读的内容。如果您信任此工作簿的来源,请单击是”
您必须单击是,否则将无法加载。然后我得到这个错误。 “Excel能够通过删除或修复不可读的内容来打开文件 已移除的功能:来自/xl/worksheets/sheet1.xml部分“
的数据验证我对此没有任何线索,这真的很烦人。如果有人有任何建议,我将非常感激。谢谢, 詹姆斯
答案 0 :(得分:7)
当我在“数据验证”对话框中定义了一个很长的数据验证列表时,我遇到了这个错误(尽管我现在无法重现它)。如果对话框中有一个长列表,请尝试将列表移动到范围,然后参考范围。
答案 1 :(得分:4)
我的工作簿遇到了同样的问题。我发现此链接最有帮助 - https://stackoverflow.com/a/21483680/3653412。
虽然接受的答案最终会解决我的问题(重建工作簿),但这需要花费大量时间。 清除排序区最终为我解决了问题。
Sub clearSortFields()
Dim ws as worksheet
ThisWorkbook.Activate
For Each ws In Worksheets
ws.Sort.SortFields.Clear
Next ws
End Sub
答案 2 :(得分:1)
删除验证单元格并再次运行代码以便在打开工作簿时重新验证解决了这个问题
Sub RemValidation()
Dim ARows As Variant
Dim i As Double
ARows = Split("C3,C4,C5,C6,C14,C19,C20,C25,F4", ",")
For i = 0 To UBound(ARows)
ThisWorkbook.Sheets("WO").Range(ARows(i)).Validation.Delete
Next
End Sub
答案 3 :(得分:0)
这就是我修复它的方法,我在工作簿中的另一个工作表的列中填写了我想要的内容,然后引用了该工作表。我将工作表名称作为参考列表从SheetName(只是将您的工作表名称放在这里)和A2:A19引用参考表的那些单元格。如果需要,这也可以更轻松地编辑列表。
Sub Test()
Worksheets("Sheet1").Activate
With rng.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=SheetName!$A$2:$A$19" 'Replace SheetName and the range with yours
End With
End Sub

答案 4 :(得分:0)
该问题已过时,但可能仍有人在寻找此问题的解决方案。 当我打开包含我使用 VBA 代码创建的数据验证列表的工作簿时,我遇到了同样的问题。在此,我添加了代码片段以在关闭工作簿时删除数据验证列表:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
On Error Resume Next
ws.Cells.SpecialCells(xlCellTypeAllValidation).Validation.Delete
On Error GoTo 0
Next ws
End Sub
如图所示,我使用 VBA 代码创建了具有有序和唯一值的数据验证列表,并将它们添加到 A 列的单元格中。