使用Excel VBA,我如何在第二个工作簿中的'thisworkbook.close‘事件之后保持我的原始代码执行?

您所在的位置:网站首页 excel表格宏启用不了 使用Excel VBA,我如何在第二个工作簿中的'thisworkbook.close‘事件之后保持我的原始代码执行?

使用Excel VBA,我如何在第二个工作簿中的'thisworkbook.close‘事件之后保持我的原始代码执行?

2023-04-13 12:42| 来源: 网络整理| 查看: 265

在Excel 2007中,我有一个工作表,其中包含其他Excel文档的列表,所有这些文档都有自己的VBA。我的代码打开列表中的第一个工作簿,让它的vba运行,然后当它完成时,将其标记为完成,并打开列表中的下一个工作簿。

所有这些都运行得很好,除非我让另一个workbok用“thisworkbook.close”关闭它自己。这会停止在原始工作簿中运行的VBA及其自身。如果我注释掉这一行,一切正常,但我宁愿一次只打开主工作簿和一个子工作簿。

此外,在这种情况下,将所有VBA移动到主工作簿也是不切实际的。

前面的代码是一个高度简化的版本,用来显示这个问题:

Workbook1 1的代码:

Sub RunReports() Dim wkb1 As Workbook Dim wks1 As Worksheet Dim lngR As Long Dim strReport As String Set wkb1 = ThisWorkbook Set wks1 = wkb1.Sheets(strDay) For lngR = 4 To 1048576 strReport = wks1.Cells(lngR, 1).Value 'open the report. Its own VBA will take care of everything else Workbooks.Open strReport 'mark the report as complete wks1.Cells(lngR, 2).Value = "done" Next lngR End Sub

打开的工作表中的代码:

Private Sub Workbook_Open() ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = Now() ThisWorkbook.Save Application.Wait (Now() + TimeValue("00:00:05")) ThisWorkbook.Close End Sub

如果我注释掉'thisworkbook.close',它会打开它们,更新它们的打开时间,并保存它们。如果不是,它将执行第一个'thisworkbook.close‘之前的所有操作,关闭第一个子工作簿,并停止所有VBA执行。

当“子”工作簿的代码包含“thisworkbook.close”(编辑后使问题清晰)时,有谁知道如何在“子”工作簿的代码完成后保持“主”工作簿的vba代码运行吗?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3