首页 文章

excel vba项目没有关闭

提问于
浏览
1

我将在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,关闭项目并继续下一个数百个和可能数千个文件 - 自动地,代码中,没有用户干预 .

4 回答

  • 1

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

    'closes data workbook
    source_wb.Close False
    
  • 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
    
  • 0

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

  • 1

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

相关问题