Excel VBA,排序,保存,关闭然后打开

时间:2018-11-27 11:02:51

标签: excel vba sorting recover

我有两个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关闭工作簿。

为什么会发生这种情况,如何纠正?

1 个答案:

答案 0 :(得分:0)

此错误

  

在文件中检测到错误

表示您的文件已损坏。

在许多情况下,将文件转换为二进制.xlsb格式可以修复文件。之后,您可以再次以XML格式.xlsm保存。

尽管如此,我经常遇到XML格式和文件损坏的问题。因此,对于大数据,我建议使用二进制格式(效率更高,并且产生的文件也更小)。