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

问题描述 投票:0回答:1

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

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

excel vba sorting recover
1个回答
0
投票

这个错误

在文件中检测到错误

表示您的文件已损坏。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.