我的宏使文件变大,尽管它删除了信息
Posted
技术标签:
【中文标题】我的宏使文件变大,尽管它删除了信息【英文标题】:My macro makes the file size larger although it deletes information 【发布时间】:2019-01-09 13:42:21 【问题描述】:我正在使用宏为公司的不同利益相关者创建单独的报告。问题是宏保存的文件比父文件大。 请注意:
没有“空行”占用空间。 结果文件中没有与外部源的连接。 任何文件(原始文件或结果文件)中都没有宏。 我确实在几年前看到了一个非常相似的帖子,但这没有令人满意的答案。尽管有人暗示了用于保存的命令,但这是我使用的命令: ActiveWorkbook.SaveAs Filename:="C:\path\" & WR_Date & "Monthly-Report" & Partner & ".xlsx"(Excel Macros file size)
以下是宏完成的步骤的回顾。
-
宏打开“主工作簿”
删除所有外部连接 (OLAP)
删除表格中的计算(复制为简单值)
删除对帐表格
保存 4 个文件(部门主文件、国家主文件、地区主文件、合作伙伴主文件)。
使用这些主文件删除利益相关者的所有不相关数据。
更新所有枢轴缓存(将所有枢轴设置为无论如何都不保留内存。
保护所有工作表和工作簿。
用正确的名称保存文件。
根据下面 cmets 中的讨论,我将我的宏粘贴在下面。全部替换功能用于删除任何类型的敏感信息,有时结果可能会很奇怪,但绝对足以发现问题。
我很确定是宏导致了这种情况:如果我复制宏完成的步骤,文件的大小会小得多(5-15 Mo vs 50-60 Mo)。
此外,区域报告是正常大小的。国家和部门文件比他们的主文件大,伙伴文件也太大。
编辑: 经过大量检查,我找到了答案的开头,它似乎与数据透视表的刷新方式有关。我的代码是这样的:
ActiveWorkbook.RefreshAll
For Each pc In ActiveWorkbook.PivotCaches
pc.Refresh
Next pc
我现在在刷新数据透视缓存之前删除了“全部刷新”,并为每个分区和国家/地区文件节省了大约 20 个月。这仍然不能完全令人满意,因为部门和国家/地区文件的大小仍与其父级文件大致相同或更大,但这些报告需要今天发布。
我会继续寻找,但肯定会在下个月之前向您发布完整的解决方案!
【问题讨论】:
如果您想节省空间,请尝试将文件另存为.xlsb
这种格式是否支持所有数据透视表和切片器?第 5 步创建的“执行母版”大小约为 30 Mo,宏从该母版创建的文件为 55 Mo...
是的,确实如此。 :)
谢谢,会试试这个:)
遗憾的是连 1kb 都没有保存 :(
【参考方案1】:
进行了快速测试,可能与文件中的数据损坏有关。
“TestSize1”文件只包含数据值 “TestSize2”文件只包含excel函数 “TestSize3”文件只包含格式Windows File Explorer - Test
我只看到“仅值”或“TestSize1”工作簿上的文件大小略有增加。我相信您不应该看到大小增加,除非工作簿中的数据因您的情况而损坏。此文件类型仅允许额外保存功能,例如宏/VBA 代码。
"The first is the default XLSX, then there's XLSM which is identical to XLSX except it can contain macros..."
我会考虑将数据值复制到新工作簿中并将其保存为.xlsb
。它应该减小大小(显然),但它也删除了可能被误读或损坏的 excel 功能。之后,在重新启动的 excel 窗口中打开.xlsb
(可能之前也重新启动计算机以清除缓存)并尝试保存回您喜欢的任何格式。添加功能和格式以恢复文档。
这对我来说断断续续地工作,用于恢复大型 .csv
文件。我希望它对你有用。
【讨论】:
文件中没有损坏的数据,我做了很多检查。以上是关于我的宏使文件变大,尽管它删除了信息的主要内容,如果未能解决你的问题,请参考以下文章