我有两个Excel文件,分别为file1.xlsm和file2.xlsm;我有一个数据表,而另一个则有其他东西。在第二个文件中,我还有一个打开第一个文件的按钮。
在第一个文件中,我有一个按钮,它使用A列作为键对所有数据进行排序,还有一个按钮,用于保存和退出。
我的排序代码:
Private Sub CommandButton2_Click()
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet.Sort
.SortFields.Add Key:=Range("A3"), Order:=xlAscending
.SetRange Range("A3:AF" & lRow)
.Header = xlNo
.Apply
End With
End Sub
问题是排序,保存并退出后,我无法通过VBA重新打开同一工作簿(该按钮不执行任何操作);我可以单击该文件,然后将其打开,但出现一个错误,提示我有问题,但是Excel可以恢复。错误日志中的错误:
在文件'C:\ file1.xlsm'中检测到错误
删除的记录:排序自
/xl/worksheets/sheet1.xml部分
要保存的按钮只是使用SaveChanges:=True
关闭工作簿。
为什么会发生这种情况,如何纠正?
答案 0 :(得分:0)
此错误
在文件中检测到错误
表示您的文件已损坏。
在许多情况下,将文件转换为二进制.xlsb
格式可以修复文件。之后,您可以再次以XML格式.xlsm
保存。
尽管如此,我经常遇到XML格式和文件损坏的问题。因此,对于大数据,我建议使用二进制格式(效率更高,并且产生的文件也更小)。