我正在浏览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,关闭项目并继续下一个数百个和可能数千个文件 - 自动地,代码中,没有来自用户的干预。
答案 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中保持可见,即使它已关闭。我的解决方案是保持我的数据库工作簿没有代码,这解决了问题。