EXCEL VBA关闭所有打开的工作簿连接到外部Excel文件

时间:2015-12-30 09:34:18

标签: excel vba excel-vba connection

我确实遇到Excel和数据连接问题,希望找到解决方案。 情况:我有一个带有2个外部数据连接的Excel报告,它们被提供给数据透视表。数据连接链接到包含数据透视表的原始数据的其他Excel文件(基本上只有一个大表),并通过数据/连接使用Excel内置功能进行设置。现在,每次我想刷新连接时Excel都会因内存不足而停止并显示错误消息。

如果我只刷新一个数据透视表,保存并关闭该文件,然后刷新其工作的其他数据透视表,但使用起来不是很方便。 我注意到的是,一旦数据被读入数据透视表,与原始数据文件的连接仍然是打开的,这是大内存消耗的原因......我假设。如果我删除连接excel正在释放loooooooot的内存,这让我猜测,如果我在数据更新后关闭连接,excel将释放内存。

所以我的问题是:如何立即关闭VBA中任何打开的工作簿连接? 注意:我觉得我很擅长VBA,但我不是专业人士

非常感谢提前 干杯,丹尼斯

1 个答案:

答案 0 :(得分:1)

此子网将删除活动工作簿中的所有连接:

Sub RemoveConnections()
    Dim conn As Long
    With ActiveWorkbook
        For conn = .Connections.Count To 1 Step -1
            .Connections(conn).Delete
        Next conn
    End With
End Sub

完成后只需导入数据并关闭连接。

如果您意味着立即关闭所有工作簿中的所有连接,则可以修改RemoveConnections以获取工作簿参数(而不是在ActiveWorkbook上运行),然后遍历Workbooks集合( untested ):< / p>

Dim wb As Workbook

For Each wb In Workbooks
    wb.AcceptAllChanges
    Call RemoveConnections(wb)
Next wb