我的宏虽然会删除信息,但会使文件大小变大



我正在使用宏为公司中的不同利益相关者创建单独的报告。问题是宏保存的文件比父文件大。请注意:

  • 没有"空行"占用空间
  • 结果文件中没有到外部源的连接
  • 任何文件(原始文件或结果文件)中都没有宏
  • 我确实在几年前看到过一篇非常相似的帖子,但没有令人满意的答案。尽管有人暗示了用于保存的命令,但我使用的是:
    ActiveWorkbook.SaveAs Filename:="C:\path\"&WR_日期&">月度报告"&合作伙伴&".xlsx">

(Excel宏文件大小)

下面是宏所做步骤的概述。

  1. 宏打开"主工作簿">
  2. 删除所有外部连接(OLAP)
  3. 删除表中的计算(复制为简单值)
  4. 删除对账表工作表
  5. 保存4个文件(部门主文件、国家/地区主文件、区域主文件、合作伙伴主文件)
  6. 使用这些主文件为涉众删除所有不相关的数据
  7. 更新所有数据透视缓存(将所有数据透视设置为不保留内存)
  8. 保护所有工作表和工作簿
  9. 使用正确的名称保存文件

根据下面评论中的讨论,我将在下面粘贴我的宏。replace all函数用于删除任何类型的敏感信息,有时结果可能很糟糕,但它肯定足以发现问题。

我很确定是宏造成的:如果我复制宏完成的步骤,文件的大小会小得多(5-15个月对50-60个月)。

此外,领土报告的大小是正常的。国家和部门的文件比他们的主文件大,合作伙伴的文件也太大了。

编辑:经过大量的检查,我发现了答案的开始,这似乎与数据透视表的刷新方式有关。我的代码是这样的:

ActiveWorkbook.RefreshAll
For Each pc In ActiveWorkbook.PivotCaches
pc.Refresh
Next pc

现在,在刷新数据透视缓存之前,我已经删除了"全部刷新",并为每个部门和国家/地区文件保存了大约20 Mo。这仍然不完全令人满意,因为部门和国家档案的大小仍然与其母公司大致相同或更大,但这些报告需要在今天发布。

我会继续寻找,但肯定会在下个月前给你一个完整的解决方案!

运行了一个快速测试,它可能与文件中的数据损坏有关。

  • "TestSize1"文件仅包含数据值
  • "TestSize2"文件仅包含excel函数
  • "TestSize3"文件仅包含格式

Windows文件资源管理器-测试

我只看到"仅值"或"TestSize1"工作簿的文件大小略有增加。我确实认为,除非工作簿中的数据已损坏,否则您不应该看到大小增加。此文件类型只允许附加保存功能,例如宏/VBA代码。

"第一个是默认的XLSX,然后是XLSM,它与XLSX相同,只是它可以包含宏…">

我会考虑只将数据值复制到新工作簿中,并将其保存为.xlsb。它应该缩小尺寸(显然),但也删除了excel可能误读或损坏的功能。之后,在excel的重新启动窗口中打开.xlsb(可能之前也会重新启动计算机以清除缓存),并尝试保存回您喜欢的任何格式。添加功能和格式以恢复文档。

这对我断断续续地恢复大型.csv文件起到了作用。我希望它对你有用。

相关内容

  • 没有找到相关文章

最新更新