在一个更大的Excel应用程序中(25个工作表、50个命令按钮、5000行代码、18个用户表单......大小为12 MB)......我们从服务器加载表格作为txt文件,并使用标准程序将这些txt_file重新转换为Excel数据。通过宏,我们在下载后删除所有查询表和连接。
一切都工作得完美而迅速,但主表现在变得越来越慢。即使打开工作簿也需要越来越多的时间,而大小保持不变。
不知何故,我有这样的感觉,从txt_files传输的数据有剩余,未删除:
我的天啊
工作簿中没有公式。速度变慢仍然存在,甚至选择main_sheet + clear的所有单元格...我想在该命令之后所有单元格都是空的...
在其他24个工作表中,没有speed_problems(甚至过滤列表850.000 x 33)
知道如何检查main_sheet中的工作簿速度变慢的原因吗?是否有比删除查询表和连接更强大的“清理”命令?是否有任何方法可以记录Excel在做什么,而它不返回命令?
2条答案
按热度按时间xqkwcwgp1#
试试这个:
在公式/命名范围中也进行检查,因为每个ListObject表格都会添加新的命名范围。
kadbb4592#
这可能根本不相关,抱歉,但我发现对我来说问题不是连接的数量,而是每个连接中的 * 参数的数量 *。
我发现“罪魁祸首”是查询表中遗留的过时/多余的参数对象。我的一些查询有大约15个参数,而SQL只需要一个!
据我所知,Excel没有一个接口,用于删除根据
QueryTable
创建的参数。当您直接在Excel中手动调整SQL代码,并使用每个参数的“?”字符将其与新参数或额外参数一起保存时,可能会发生这种情况。当您最终确定一个参数时,所有其他参数仍然留在后面。我找不到清除/删除它们的方法。如果你...
转到Excel -〉文件打开工作簿-〉停止所有宏(如果有)-〉单击数据-〉查询和连接打开所有查询等-〉双击查询或连接,检查定义选项卡,然后单击参数...,您可能会看到一个巨大的参数列表,这些参数的作用与第一个参数相同。
这会使Excel的运行速度呈指数级下降,因为Excel每次调用Query来刷新工作表/表时,都会再次运行该查询,而且是“n”次。
由于Excel没有适当的接口来管理参数,我不得不使用此代码将它们全部删除,并为每个查询只创建一个参数。
我找不到只删除一个或几个参数的方法,例如
Cn.Parameter(ndx).Delete
。没有这样的方法。