excel vba 项目未关闭

问题描述 投票:0回答:5

我正在 VBA 中检查数百个 Excel 文件,提取某些数据并将其复制到主工作簿中的主电子表格中。 我有一个 VBA 脚本驻留在这个主电子表格中。

我试图在打开每个源工作簿并获得我需要的内容后将其关闭。 它看起来像这样:

dim main_wb
dim source_wb
set main_wb = activeworkbook

Loop thru workbook names
  set source_wb = workbooks.open(a_workbook_name)

  do some stuff
  eventually copy a few rows from various sheets into the main wb

  source_wb.close()
  set source_wb = Nothing
End Loop

问题在于,系统似乎继续在项目资源管理器中保持文件打开状态……最终它耗尽了内存或其他东西。所有文件单独工作都正常。 只有当我试图同时处理它们时,我才会遇到问题。 工作簿“closes()”,但项目仍然存在于开发人员窗口的项目资源管理器中。

我如何告诉它结束一个项目。 我需要能够,没有废话,关闭项目并继续处理数百个甚至可能数千个文件的下一个项目 - 自动地,以代码形式,无需用户干预。

vba excel project
5个回答
1
投票

尝试...它在类似类型的程序中对我有用。

'closes data workbook
source_wb.Close False

1
投票

我最近遇到了这个问题:我有一个工作簿,它从我用作数据库的其他工作簿中获取数据。在其中一个上,我无意中放置了一些代码。这导致工作簿即使在关闭后在 VBE 中仍然可见。我的解决方案是让我的数据库工作簿不含代码,这解决了问题。


0
投票

VBE 编辑器似乎并不总是对正在关闭的工作簿可见。

我在 ThisWorkbook 模块中包含了以下代码,该代码来自另一个线程中的评论,这解决了问题。

http://dailydoseofexcel.com/archives/2004/12/11/google-desktop/

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
' -------------------------------------------------------------
' this code ensures that the VBA project is completely removed
' when the workbook is closed
' http://dailydoseofexcel.com/archives/2004/12/11/google-desktop/
' -------------------------------------------------------------
 If Not (Application.VBE.MainWindow.Visible) Then
 Application.VBE.MainWindow.Visible = True
 Application.VBE.MainWindow.Visible = False
 End If
 End Sub

0
投票

我想我已经找到了解决方案(至少对我来说)。

我已经为此奋斗了数周,最后发现,如果我单击 vbe 中的停止按钮(运行旁边的方形按钮,工具提示将其标记为“重置”),那么它实际上会清除多余的项目。这很奇怪,因为代码已经停止运行但它有效。

这导致了我当前的解决方案,使用 End 而不是依赖“end sub”来清除内存。

Sub exampleSub()

    'normal code (inclduing calls to other subs and proceedures)

    
    End 'this ends all running code (and is not best practice) but
    'seems to solve duplicate vba projects.

End Sub

-1
投票

解决方案: 管理您的保存(是、否、取消) 销毁应用程序中插件的链接 关闭这些插件 关闭您的申请

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.