即使处于空闲状态,带有宏的Excel工作簿仍占用50%的CPU。

3

首先:

  • 使用Excel 2010,Win 7
  • 所有附加插件已被禁用
  • 所有电子表格的最后使用单元格都已缩减到其最小行、列值
  • 我的机器在今天的标准下算是旧的,戴尔Inspiron 6400,1.73 GHz,3.3 Gig内存

我有一个电子表格,当它处于打开和活动状态时,即使在空闲时也会使用至少50%的CPU。如果我运行其他程序,这会导致计算机过热并关闭。几个月前我在另一个论坛上发布了这个问题,最终的建议是“不要担心它”。好吧,我不能再这样做了。它已经成为一个问题。

起初我以为任何带有宏的工作簿都会出现这种情况。但我已经让自己相信这不是这种情况。然后我以为可能是我添加的插件。但这也不是这种情况。我阅读了将电子表格最小化到其最小大小的方法。但这没有帮助。这个工作簿有一个自动打开功能,可以保存备份,从互联网上收集一些数据,并对这些数据进行一些操作。我完全删除了这个子程序,但没有效果。还要注意的是,如果我打开另一个工作簿,同时保持这个工作簿打开,并使第二个工作簿成为活动工作簿,则CPU使用率将降至接近零。最后需要注意的是,我有几个这个“最终版本”的前身。它们都没有这个CPU问题。不知怎么的,在这个“最终版本”中添加了一些代码导致了这个问题。

我希望有人能给我一些线索,告诉我还应该寻找什么。我将比较这些旧备份和当前版本,但这将是一个漫长的过程。任何建议都将不胜感激。


请您提供一些导致问题的宏的具体信息,代码片段将会很有帮助。谢谢和问候。 - Alexander Bell
2
转到 数据 ► 连接 ► 连接和数据 ► 获取外部数据 ► 现有连接,查看您在那里拥有的内容。 - user4039065
Jeeped - 你说得一点也没错。有成百上千个。我把它们全部删除了。问题解决了。下一个问题是 - 有没有办法让它们不积累?感谢您的帮助! - awsmitty
Jeeped - 我回来做了一些清理工作。自从我第一次发布以来,我一直在尝试解决这个问题。将工作簿恢复到原始状态后,我检查了CPU使用情况。大部分时间都是零,偶尔会有1%的闪烁。非常感谢你。我欠你一杯啤酒!我的电脑欠你两杯啤酒和五年的寿命。谢谢。 - awsmitty
@Jeeped,这是一个答案 ;) - Maciej Los
1个回答

1
根据我的早期评论,当Auto_Open宏在每次打开工作簿时运行时,它会创建一个新的与其Internet数据的 连接,而不丢弃先前的连接。这些古老的连接应该列在 数据►连接►连接 和/或 数据►获取外部数据►现有连接 中。
由于我没有完整的互联网连接创建方法和参数,我将提供这种类型的“事件宏”,它将在工作簿关闭时删除所有连接。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With ThisWorkbook
        Dim cn As Object
        For Each cn In .Connections
            cn.Delete
        Next cn
        .Save
    End With
End Sub

该宏应放在ThisWorkbook代码表中。请注意,它还保存您的工作簿;如果不希望这种行为,请将代码移到模块表中并更改为可以手动运行的公共宏。

1
Jeeped - 再次感谢。我已经解决了,但你的方法更好看。我用do while语句实现了它。我觉得我不需要Call Nuke_Connections语句,也可能不会包括.Save。谢谢,你真的帮了我很大忙。 - awsmitty
@awsmitty - 对不起!我测试了几个配置中的一个,其中之一是调用一个也可以手动运行的公共子程序。我留下了那个调用行,但现在已经编辑掉了。感谢您注意到这一点。 - user4039065
Jeeped - 我只是想再次感谢你。去年十月左右,我刚开始从网上下载信息。我不知道这些连接正在积累。感谢你的提示。 - awsmitty
@awsmitty - 感谢您抽出时间留下这封最新的简短便条。听到这样的成功故事总是令人欣喜的好消息。 - user4039065

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接