excel vba项目没有关闭

时间:2013-07-30 16:27:15

标签: excel vba excel-vba project

我正在浏览VBA中的100多个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

问题在于它像系统一样继续在项目资源管理器中保持文件打开...并最终耗尽内存或其他东西。所有文件都可以单独使用。只有当我试图一次性处理它们时才会出现问题。工作簿“closing()”但项目仍然存在于开发人员窗口的项目浏览器中。

如何告诉它关闭项目。我需要能够,没有BS,关闭项目并继续下一个数百个和可能数千个文件 - 自动地,代码中,没有来自用户的干预。

3 个答案:

答案 0 :(得分:1)

尝试......它适用于我类似的程序。

'closes data workbook
source_wb.Close False

答案 1 :(得分:1)

似乎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

答案 2 :(得分:1)

我最近遇到了这个问题:我有一个工作簿可以从我用作数据库的其他工作簿中获取数据。其中一个,我无意中放了一些代码。这导致工作簿在VBE中保持可见,即使它已关闭。我的解决方案是保持我的数据库工作簿没有代码,这解决了问题。