vba excel连接查询表删除

时间:2013-06-20 09:48:31

标签: excel-vba connection vba excel

在一个更大的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正在做什么,而不返回命令?

2 个答案:

答案 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)的方法。没有这样的方法。