使用 VBA 将 .xls 转换为 .xlsx 文件似乎不会减小大小

Converting .xls to .xlsx files with VBA doesn't seem to reduce size

因此,为了磁盘 space 经济,我想将一堆旧的 .xls 文件转换为 .xlsx 文件。一个接一个地做是不可能的。我似乎已经写了一些代码,实际上确实打开文件并以新格式保存它们(计划添加一些行以稍后删除旧文件)。

    For Each Myfile In PN
        On Error Resume Next
        Set xlsxWb = Workbooks.Open(Myfile)
        Set xlsWb = xlsxWb
        NameNpath = xlsxWb.FullName & "x"
        xlsxWb.SaveAs Filename:=NameNpath, FileFormat:=xlOpenXMLWorkbook
        xlsxWb.Close SaveChanges:=False
        Kill Myfile
    Next Myfile

但是有一个问题。将文件保存为或简单地用 excel 转换它通常会大大减小文件的大小,它的大小会减少 2 倍。 运行 我的宏似乎没有达到相同的结果,文件的大小保持不变,即使它现在似乎是 .xlsx 格式。我猜可能有什么可疑的事情发生,比如 似乎 是 .xlsx 格式,但实际上不是。 你知道那里可能出什么问题吗?

要减小 XLS 文件或 XLSX 文件的大小,请使用 XLSB 扩展名保存。这些文件将 save/close 更快,打开速度更快,并且可能会缩小...可能...1/3 或 2/3 大小。

XLSB 文件是 Excel 二进制工作簿文件格​​式。二进制文件的读写速度通常比 non-binary 文件快得多,而且更小。这是因为二进制文件是内存的原始转储(基本上是 1 和 0)。如果您打开二进制文件,它们可能看起来像乱码。二进制文件只有在您知道文件对象的确切类型时才能打开。另一方面,文本文件(JSON、XML、CSV、文本),顾名思义,是可以在文本编辑器(Word、记事本等)中打开的文件,其结构是构建的进入文件只需阅读文件即可理解。

https://analystcave.com/excel-working-with-large-excel-files-the-xlsb-format/

我好像明白了。 出于某种原因,如果您不重新打开和关闭并保存更改,则新转换的文件 excel 不会减小文件大小。也许它在后台压缩文件或其他东西 - 不确定。现在我只是添加了几行打开和关闭转换后的文件并保存更改 - 对我有用!有时会大幅减小大小,以至于减少 10MB