如果单击关闭按钮,PowerQuery的Excel内存泄漏消失了吗? [关闭]

问题描述 投票:0回答:1
我有几本工作簿,它们最近随机地开始使用大量内存,直到Excel崩溃或重新启动工作表为止。随机出现是因为它可能工作数小时而没有问题,然后突然增长,或者可能从启动开始就迅速增长。

它盯着Excel 365,但我在2010年尝试过它们,但它们仍然存在内存泄漏?

[当监视何时看到一张纸使用大量内存时,我碰到要关闭以关闭它,并被提示保存该纸,但是在我注意到之前,我发现内存使用率降为正常水平。

然后点击取消,工作表继续正常工作。内存从2 GB增长到正常的400 MB,只是快要关闭了,而只是取消了。

我在其他有内存泄漏的表上尝试过,它们表现出相似的行为。

所以我有2个问题。只需按一下关闭按钮即可清除哪种内存泄漏?

而且我可以定期在VBA中复制“关闭然后取消”行为作为解决方法吗?

UPDATE:回答一些问题。2016年X中的CLOSE按钮应关闭excel。取消是“您要保存的更改内容”框中的一个。我没有尝试使用File-> Close选项仅关闭工作表。

该工作簿确实包含VBA代码,但仅包含按钮。没有事件驱动。我也确实有一个打开的OnTime事件和一个Workbook_BeforeUnload,它应该关闭OnTime,但现在不执行任何操作。我会仔细研究一下。

而且,自那以后或一个多小时后,我进行过“关闭/取消”的所有工作表尚未开始泄漏。

UPDATE2

正如我提到的那样,我有Workbook_BeforeUnload,但这是不正确的,至少在365或更早版本中,它应该是Workbook_BeforeClose,所以我没有在close上运行的事件可以帮助解决此问题。另外,我没有任何循环引用,并且删除了任何数组公式,如果它们变得易失,它们可能会产生奇怪的行为。在365中将工作表更改为xlsb甚至xls都无济于事,但是如果我在2003年运行xls,就不会有问题。将计算设置为“手动”不会停止泄漏,但是会禁用工作表,因此,如果我重新计算,内存会继续增加。

更新已解决:

我在这个问题的答案中找到了:Excel WorkbookBeforeClose event fired multiple times 当您关闭excel应用程序本身时,它会为所有打开的工作簿(包括任何AddIn的)触发。。我没有在2016年启用加载项,在2010年有点启用了365内置的PowerQuery。我不使用PowerQuery,但很久以前我曾使用另一本工作簿。我确实发现我仍然具有全局(而不是工作簿)查询权限。当我清除这些泄漏时,泄漏已大大减少,但没有消除。然后,我在查询设置中找到并清除了缓存,然后继续在全局和每个工作簿中删除或禁用任何自动加载查询选项。

这似乎已完全消除了泄漏。我不知道它是如何引起的,但是我知道它始于365版本1908(内部版本11929.20606),并且仅在当前版本2002(内部版本12527.20442)之后变得更糟。

excel vba excel-365
1个回答
0
投票
好吧,看来您的问题不需要任何VBA(除非是您的VBA代码在做)。

如果没有VBA,则应检查:

    如果有任何循环参考
  • 如果禁用计算会有所帮助

    Application.Calculate = xlManual

如果将工作表的文件扩展名更改为.xlsb(二进制)有帮助
© www.soinside.com 2019 - 2024. All rights reserved.