我的宏虽然删除了信息,但使文件更大了

时间:2019-01-09 13:42:22

标签: excel vba

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

  • 没有“空行”占用空间。
  • 结果文件中没有与外部源的连接。
  • 任何文件(原始文件或结果文件)中都没有宏。
  • 几年前我确实看到过非常相似的帖子,但这没有令人满意的答案。尽管有人提示用于保存的命令,但这是我使用的命令:
    ActiveWorkbook.SaveAs文件名:=“ C:\ path \”&WR_Date&“ 每月报告”&Partner&“ .xlsx”

Excel Macros file size

下面是对宏完成的步骤的概述。

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

根据下面评论中的讨论,我将宏粘贴到下面。全部替换功能用于删除任何类型的敏感信息,有时结果可能很奇怪,但绝对足以发现问题。

我很确定是由宏引起的:如果我复制由宏执行的步骤,则文件的大小要小得多(5-15 Mo与50-60 Mo)。

此外,地区报告的大小是正常的。国家和地区文件大于其主文件,伙伴文件也太大。

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

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

现在,在刷新数据透视表缓存之前,我已删除了“全部刷新”并为每个分区和国家(地区)文件节省了约20Mo。这仍然不能完全令人满意,因为分部和国家(地区)档案的大小仍与其父档案相同或更大,但是这些报告需要在今天发布。

我会继续寻找,但一定会在下个月之前向您发布完整的决议!

1 个答案:

答案 0 :(得分: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窗口中打开.xlsb(可能还要重新启动计算机以清除缓存),然后尝试将其保存为所需的任何格式。添加功能和格式以恢复文档。

这对我来说是断断续续的,可以恢复大的.csv文件。我希望它对您有用。