【问题标题】:EXCEL VBA close all open Workbook connections to external Excel FilesEXCEL VBA 关闭所有打开的工作簿与外部 Excel 文件的连接
【发布时间】:2016-04-04 06:19:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 大家好。没有人可以帮忙吗?真的很期待解决这个问题。也欢迎替代解决方案。非常感谢,丹尼斯
  • 没人?它仍然是相关的!

标签: vba excel connection


【解决方案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 集合(未测试):

Dim wb As Workbook

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多