2010-06-09 247 views
2

我在应用程序中工作,并向用户提供一个菜单,以在该Excel应用程序(Excel工作簿)中添加一个新工作表。减小Excel的文件大小

的工作表将被添加一旦用户点击了“确定”按钮,我使用模板来添加这个工作表(该模板有很多格式和公式吧)

比方说文件大小如果工作簿已保存,则在添加工作表后为10 MB。然后关闭Excel应用程序并重新打开并保存该文件,然后文件大小降至8 MB。

有人可以让我知道可能是什么原因相同?

+0

如果有人向我提供解决方案,我将不胜感激。 – Ram 2010-06-09 06:33:42

回答

6

Unused formatting是Excel中'文件膨胀'最常见的原因:紧接着的一个问题是表单上的'使用范围'比您想象的要大 - Excel维护表单中的每个单元格的元数据从A1到最低,最远的单元格,并且需要大量内存。

但新工作表中的'已使用的范围'被保存为单元格A1到最后一个包含数据的单元格。

提示:查看工作表的垂直和水平滚动条中的滑块:它们是块状的灰色块,看起来他们只会滚动五十行或一列吗?或者,如果鼠标靠近它们,它们是否会有几百行滚动的灰色破折号?当一个滑动条移动的距离等于它自己的长度时,它会在可用页面空间中完成一个“向下翻页”(或横向页面);空间或页面集合越大(或Excel中使用的范围),它们越小。

我建议去胀气()有一个更好的词!缩小?减肥?变形?)您的工作簿。过去有很多第三方工具可用于此,但Excel 2003以及以后版本都内置了工作簿重建器:只需点击“保存”和“另存为...”网页即可。然后退出Excel,重新打开Excel,然后使用'打开'打开html工作簿(尽管它是一个HTML文件,它将有一个Excel图标),并再次'另存为...'xls文件。再次关闭Excel,并查看文件大小。

+1

Hi Nile, 感谢您的建议。无法要求我的用户每次都进行另存为选项。 我几乎从微软那里得到了解决方案(完全不是解决方案)。它似乎是Microsfot的一个bug。 请找到链接一样:http://support.microsoft.com/kb/293828#appliesto 问候, 拉姆 – Ram 2010-06-10 09:55:28

+0

保存为HTML可以剥离出的重要信息,如过滤器。最好删除残留数据。 – 2014-08-14 22:16:36

+0

@Greg - 删除'cruft'数据是一个很好的建议;但在有多张工作表的工作簿上工作很长,而且您会遇到文件膨胀是二进制“位图”残留(通常与枢轴缓存和已删除映像关联)的情况,用户界面无法访问该文件。在这一点上,文件'洗衣机'工具,并保存和退出其他文件格式是你所拥有的。 – 2014-11-04 17:06:18

1

您可以使用另存为启用宏的文件将其降至最佳内存容量。我用它来减少大约10 MB到4.5 MB的大小。它帮助我解决了我的问题。

2

在最后一个单元用于重置最后一个单元([Ctrl] + [End])后,可以清除所有列和行。 您也可以启用压缩图像。

我dev的一种带自动加载项安装(法语)在上下文菜单中包括3个新的按钮:

  1. 优化
  2. 优化和保存
  3. 切换案例

enter image description here

这是基于在KB of Microsoft office 2003与交友改进:图像

  • 修复的错误中柱与2007年的Excel
  • 壮举兼容性

    1. 附加压缩 - 2010 - ...

    解决方案>,你可以下载my * .xla文件here

  • +0

    你的插件对我来说不适用于excel,但目前为止我唯一的工作解决方案是使用“清除最后一个单元格用于重置最后单元格后的所有列和行([Ctrl] + [End])”手动它将6MB xlsx文件的大小减小到3mb,并将文件打开从80秒缩短到只有惊人的8秒 – 2014-10-02 05:45:27

    2

    尼罗河是正确的,“UsedRange”没有正确得到重置导致大量的膨胀。您可以使用1行VBA代码非常简单地进行重置。

    ActiveSheet.UsedRange 
    

    在Excel中打开开发选项卡,插入一个模块,添加下面的宏,并运行它

    Public Sub ResetUsedRange() 
        ActiveSheet.UsedRange 
    End Sub 
    

    你也可以配合这个宏到Excel快捷键使用应用程序更快地访问.OnKey event