vba excel连接查询表删除
在一个更大的Excel应用程序中,(25页,50个命令按钮,5000行代码,18个用户表单…大小为12MB)。。。我们从服务器加载表作为txt文件,并使用标准过程将这些txt_文件重新转换为excel数据。 通过宏,我们在下载后删除所有查询表和连接 一切都很完美,速度也很快,但是主工作表现在越来越慢了。 即使打开工作簿也需要越来越多的时间,而大小保持不变 不知怎的,我感觉到,txt_文件中的数据传输有一些剩余内容,这些内容不会被删除:vba excel连接查询表删除,excel,connection,vba,Excel,Connection,Vba,在一个更大的Excel应用程序中,(25页,50个命令按钮,5000行代码,18个用户表单…大小为12MB)。。。我们从服务器加载表作为txt文件,并使用标准过程将这些txt_文件重新转换为excel数据。 通过宏,我们在下载后删除所有查询表和连接 一切都很完美,速度也很快,但是主工作表现在越来越慢了。 即使打开工作簿也需要越来越多的时间,而大小保持不变 不知怎的,我感觉到,txt_文件中的数据传输有一些剩余内容,这些内容不会被删除: Dim ws As Worksheet Dim qt
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
#
#
工作簿中没有公式。
即使选择主工作表的所有单元格并清除,速度也会持续减慢。。。我想在那个命令之后所有的单元格都是空的
在其他24张表中,没有速度问题(甚至过滤列表850.000 x 33)
知道如何在主工作表中检查是什么使工作簿变慢了吗?
是否有比删除查询表和连接更强大的“清理”命令?
当excel不返回命令时,是否有任何方法可以记录它正在做的事情?尝试以下方法:
ActiveSheet.UsedRange.EntireRow.Delete
在公式/命名范围中也进行检查,因为每个ListObject表都添加了新的命名范围
Sub DeleteAllNamedRanges()
Dim NR As Name
For Each NR In Application.ActiveWorkbook.Names
NR.Delete
Next
End Sub
抱歉,这可能根本没有关系,但我发现问题不在于连接的数量,而在于每个连接中的参数数量 我发现“罪魁祸首”是遗留在查询表中的过时/过多的参数对象。我的一些查询大约有15个参数,而SQL只需要一个 据我所知,Excel没有一个接口,用于在根据
查询表创建参数后删除这些参数。当您直接在Excel中手动调整SQL代码,并使用每个参数的“?”字符将其与新参数或额外参数一起保存时,可能会发生这种情况。当您最终确定一个参数时,所有其他参数仍然落后。我找不到清除/删除它们的方法
如果你
转到Excel->文件打开工作簿->停止所有宏(如果有)->
单击数据->查询和连接打开所有查询等
->双击一个查询或连接,检查定义选项卡,然后单击参数…,您可能会看到一个庞大的参数列表,其中包含
与第一个参数相同
这会使Excel的速度呈指数级降低,因为Excel每次调用查询以刷新工作表/表时,都会一次又一次地运行该查询
由于Excel没有适当的界面来管理参数,所以我不得不使用此代码将它们全部删除,并且每个查询只创建一个参数
For Each Cn In ActiveSheet.QueryTables
Cn.Parameters.Delete
Next Cn
我找不到只删除一个或几个参数的方法,例如Cn.Parameter(ndx).delete
。没有这样的方法。我在某个地方读到,从Excel 2007开始,你必须处理每个ActiveSheet中的QueryTable。ListObjects如果你试图清除主工作表,你应该选择all,然后在键盘上按下(Control&-)这是Control键,同时按住数字键盘上的减号键,这应该删除所有的单元格,而不仅仅是清除内容,因此释放一些内存。。。