2

我正在浏览 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

问题是它看起来像系统继续在项目资源管理器中保持文件打开......最终它耗尽了内存或其他东西。所有文件单独工作正常。只有当我尝试一次处理所有这些时,我才会遇到问题。工作簿“closes()”但项目仍存在于开发人员窗口的项目资源管理器中。

我如何告诉它关闭一个项目。我需要能够,没有 BS,关闭项目并继续下一个项目以获取数百甚至可能数千个文件 - 自动,在代码中,无需用户干预。

4

4 回答 4

1

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

'closes data workbook
source_wb.Close False
于 2013-07-30T17:36:26.647 回答
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
于 2015-05-14T11:50:57.910 回答
1

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

于 2017-09-27T15:36:26.953 回答
-1

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

于 2015-09-20T00:04:31.677 回答