Excel不断加载我的电子表格,但出现错误

icomxhvb  于 2023-05-30  发布在  其他
关注(0)|答案(6)|浏览(148)

当我加载电子表格时,我一直得到这个错误。它会让我修复它,从而删除所有的验证器。该文件将另存为xlsm。
“Excel在''中发现不可读的内容是否要恢复此工作簿的内容。如果您信任此工作簿的来源,请单击“是”
你必须点击是,否则它不会加载。然后我得到这个错误。“Excel能够通过删除或修复不可读的内容打开文件删除的功能:数据验证来自/xl/worksheets/sheet1.xml部分”
我对此毫无头绪,这真的很烦人。如果任何人有任何建议,我将不胜感激。谢谢,詹姆斯

lp0sw83n

lp0sw83n1#

当我在DataValidation对话框中定义了一个很长的DataValidation列表时,我就遇到了这个错误(尽管我现在不能重现它)。如果对话框中有一个长列表,请尝试将列表移动到某个范围,然后引用该范围。

nhn9ugyo

nhn9ugyo2#

我的工作簿也有同样的问题。我发现这个链接最有帮助-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
q3qa4bjr

q3qa4bjr3#

通过删除验证单元格并再次运行代码以在打开工作簿时进行重新验证,可以解决此问题

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
whhtz7ly

whhtz7ly4#

这个问题已经过时了,但可能仍然有人在寻找解决这个问题的方法。当我打开包含使用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列的单元格中。
Source file

cwtwac6a

cwtwac6a5#

这就是我所做的修复它,我填写了我想在列表中的另一个工作表的一列,然后引用该工作表。我做了工作表名称,我引用了来自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
dfddblmv

dfddblmv6#

解决这个问题的最简单方法似乎是在退出工作簿之前删除验证:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wkbk As Workbook
Dim wksh1 As Worksheet
Set wkbk = ActiveWorkbook
Set wksh1 = wkbk.Sheets("RTNL Gen")
'Step 1:  Activate the message box and start the check
    Select Case MsgBox("Save and Close?", vbOKCancel, "Rationale Generator"
'Step 2: Cancel button pressed, cancel the close
    Case Is = vbCancel
    Cancel = True
'Step 3: OK button pressed, DELETE VALIDATION, save the workbook and close
    Case Is = vbOK
    wksh1.Range("A2").Validation.Delete
    wkbk.Save
'Step 4: Close your Select Case statement
    End Select
End Sub

相关问题