在一个更大的Excel应用程序中,(25张,50个命令按钮,5000行代码,18个用户表单...大小12 MB)...我们从服务器加载表作为txt文件并将这些txt_files重新转换为excel数据采用标准程序。 通过宏,我们在下载后删除所有查询表和连接。
一切都工作得很完美和快速,但主要表现在越来越慢。 即使打开工作簿也需要花费越来越多的时间,而大小则保持不变。
不知怎的,我有这样的感觉,还有来自txt_files的剩余数据传输没有被删除:
#Dim ws As Worksheet
Dim qt As QueryTable
For Each ws In ThisWorkbook.Worksheets
For Each qt In ws.QueryTables
qt.Delete
Next qt
Next ws
If ActiveWorkbook.Connections.Count > 0 Then
For i = 1 To ActiveWorkbook.Connections.Count
ActiveWorkbook.Connections.Item(1).Delete
Next i
EndIf
#
工作簿中没有公式。 减速仍然存在,甚至选择main_sheet的所有单元格+ clear ...我想在该命令之后所有单元格都是空的......
在其他24张表中没有speed_problems(甚至过滤List 850.000 x 33)
知道如何检查main_sheet中工作簿的速度是什么? 是否有更强大的'清理'命令然后删除查询表和连接? 是否有任何方法可以记录excel正在做什么,而不返回命令?
答案 0 :(得分:0)
试试这个:
ActiveSheet.UsedRange.EntireRow.Delete
同时检查公式/命名范围,每个ListObject表都添加新的命名范围。
Sub DeleteAllNamedRanges()
Dim NR As Name
For Each NR In Application.ActiveWorkbook.Names
NR.Delete
Next
End Sub
答案 1 :(得分:0)
这可能根本不相关,很抱歉,但是我发现我的问题不是连接数,而是每个连接中的参数数。
我发现“罪魁祸首”是查询表本身中遗留的过时/过多的参数对象。当SQL只需要一个参数时,我的一些查询就有大约15个参数!
我没有一个Excel知道的接口,一旦针对QueryTable
创建了参数,它们就删除。当您直接在Excel中手动调整SQL代码并使用'?'将其保存为新参数或额外参数时,可能会发生这种情况。每个参数的字符。当您最终确定一个参数时,所有其他参数仍被保留。我找不到清除/删除它们的方法。
如果您...
转到Excel->文件打开工作簿->停止所有宏(如果有)-> 单击数据->查询和连接以打开所有查询,等等。 ->双击查询或连接,然后检查“定义”选项卡,然后单击“参数...”,您可能会看到大量的参数 与第一个参数相同。
这会成倍地减慢Excel的速度,因为Excel每次刷新工作表/表的查询调用都会再次运行该查询,并重复运行n次。
由于Excel没有合适的界面来管理参数,因此我不得不使用此代码将它们全部删除,并且每个查询仅创建一个参数。
For Each Cn In ActiveSheet.QueryTables
Cn.Parameters.Delete
Next Cn
我找不到只删除一个或几个参数(例如Cn.Parameter(ndx).Delete
)的方法。没有这样的方法。