【问题标题】:Excel VBA macro looping "Save As" increases file size? [closed]Excel VBA宏循环“另存为”会增加文件大小? [关闭]
【发布时间】:2019-09-18 10:05:58
【问题描述】:

我正在处理 3 个单独的 Excel 文件。 一个(文件 D.xlsx)有数据,我将存储到一个数组中。 一个(文件 M.xlsm)有宏,它对数据执行一些计算。 一个(文件 T.xlsx)是 16 张 -3 列 x 1300 行的模板,每个单元格插入最终数组(没有范围分配,如果重要的话)。

完成填充模板后,我“另存为”,然后用下一系列数据覆盖它,然后“另存为”,依此类推。问题是每次运行它会增加 200 Kb,而我需要有 150 个最终文件,这意味着最后一个文件将比模板大 30 Mb,而在内容方面没有任何不同。

我已经尝试过: 保存它而不在文件名中指定扩展名 - 没有变化。 将其保存为二进制文件——同样的问题只是规模较小(每次运行 +10 kb)。 禁用工作簿的自动恢复 - 没有变化。 禁用/启用更新、状态栏、事件等 - 没有变化。 只插入值 0 - 没有变化。

For q = 1 To UBound(arrTotals, 2) Step 3
   For n = 1 To UBound(arrTotals, 1)
        wbTEM.Worksheets(wsN).Cells(n, q).Value = arrTotals(n, q)
        wbTEM.Worksheets(wsN).Cells(n, q + 1).Value = arrTotals(n, q + 1)
        wbTEM.Worksheets(wsN).Cells(n, q + 2).Value = arrTotals(n, q + 2)
   Next n
   If (q + 2) Mod 48 = 0 Then
        wbTEM.SaveAs FileName:=pathx & arrNames(wbN) & ".xlsb", FileFormat:=50
   End If
Next q

结果数组是一个双精度数组,但我们不是在谈论天文数据,无论如何这些值或多或少是相同的,所以我希望所有文件的大小相同,而不是不断增加它们大小。

【问题讨论】:

  • 我不清楚,哪本书在增加它的大小?我正在尝试复制您的问题,并且这本书始终保持相同的大小。
  • 模板 T(代码中的 wbTEM)。我打开,我将它保存为“A”(关闭模板 T 并打开一个文件“A”)。然后覆盖“A”,将其保存为“B”(这会关闭“A”并让打开的文件“B”大 200 Kb)等等。
  • @RiccardoCrevatin 你在你的床单里加东西吗?
  • @Dorian,我用 3x1300 范围内的新数字覆盖了 16 张纸。在代码中,“arrTotals”是我需要的数字数组,“wbTem”是模板。 (我删除了计算确切工作表编号“wsN”和工作簿编号“wbN”的部分)。除了基本替换这些数字之外别无他法。
  • @RiccardoCrevatin 请问您检查旧值是否被删除并被新值替换?

标签: excel vba save size


【解决方案1】:

问题是您添加数据的 Excel 文件未按预期清理。所以你的文件的行数会增加。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多