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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel VBA,排序,保存,关闭,然后打开相关的知识,希望对你有一定的参考价值。

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

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

答案

这个错误

在文件中检测到错误

表示您的文件已损坏。

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

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

以上是关于Excel VBA,排序,保存,关闭,然后打开的主要内容,如果未能解决你的问题,请参考以下文章

Excel 2010 vba 复制选择工作表,保存并关闭两个工作簿

在工作簿关闭的Excel VBA中禁用剪贴板提示

Excel VBA代码无法保存

当关闭文档是excel vba为啥宏代码自动消失

VBA 其他工作簿未正确关闭

通过 Access 2013 VBA 编辑后无法打开 Excel 2013 文件