【问题标题】:vba to force close on protected projectvba 强制关闭受保护的项目
【发布时间】:2019-03-20 12:40:57
【问题描述】:

我们使用它来强制关闭在关闭 Excel 工作簿后保持打开状态的 vba 项目;

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    If Not (Application.VBE.MainWindow.Visible) Then
        Application.VBE.MainWindow.Visible = True
        Application.VBE.MainWindow.Visible = False
    End If
End Sub

在您保护项目之前,它可以正常工作。保护项目后,即使您关闭 Excel 工作簿,它也会再次保持打开状态。

我们唯一的解决方法是每天定期关闭所有 Excel 实例几次,以阻止出现内存错误。

有什么建议吗?

【问题讨论】:

  • VBA 项目如果文件关闭,则无法保持打开状态,因为 VBA 是工作簿的一部分。如果您关闭工作簿并且其 VBA 保持打开状态,则意味着您的工作簿没有正确关闭,您应该修复它而不是尝试解决方法。 • 另请注意.Visible = False 不会关闭任何东西,只是隐藏。这意味着它保持打开状态。
  • On Error Resume Next(没有尝试测试和响应错误)已经表明您正在做一些有问题的事情。
  • 感谢您的建议!
  • @DarrellMee 我认为你上错了树。您能否改进 (edit) 您的问题并添加有关您的工作簿如何打开/关闭(手动或通过代码)的更多信息。因为我认为这是X/Y-Problem 而你问错了问题。您的实际问题是另一回事,但我们需要更多关于实际情况的详细信息才能真正帮助您。 • 最好您可以提供minimal reproducible example 来说明您的实际问题。听起来你在其他地方有内存泄漏。
  • "[snip]停止出现内存错误。" 什么内存错误?在问题的前面没有提到一个......

标签: excel vba


【解决方案1】:

您是否尝试在 vba 中关闭后添加“Set Application.ThisWorkbook = Nothing”?

Workbooks.Open ThisWorkbook.FullName

ThisWorkbook.Close False

Set Application.ThisWorkbook = Nothing

这帮助我解决了过去关闭工作簿后仍然存在 VBA 的类似问题。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多