前段时间我构建了一个查看名称列表的宏,并根据名称列表根据列表的每个名称创建工作簿。宏为每个创建的新工作簿添加一些内容,然后保存并关闭新工作簿,然后转到列表中的下一个名称并再次启动该过程。我遇到的问题是Excel会在关闭任何新工作簿的任何代码后随机崩溃。当我随机说,我的意思是有时它可能会通过列表中的3个名称并崩溃,有时它可能会通过列表中的10个名称然后崩溃,但它总是在关闭新工作簿的代码部分之后。
我尝试了一些不同的方法来关闭工作簿,但所有这些方法都会产生同样的问题。
Workbooks("Workbook_Name").Close SaveChanges:=False
(我试过设置为真和假)
ActiveWindows.Close
ActiveWorkbook.Close
Application.Windows("Workbook_Name").Close
我知道问题的原因是close函数是因为当我完全取出它时,只是让它在保持每个新工作簿打开的同时运行,它不会崩溃。显然,这是不切实际的,因为当我打开并打开数百本工作簿时,它给我的系统带来了巨大压力。
我原本以为问题可能是时间问题,并且工作簿在完成运行之前试图在其他代码之前关闭,但我在关闭函数之前和之后都添加了Application.Wait (Now + TimeValue("00:00:00"))
并且等待时间不同,问题仍然存在。
以下是紧邻close函数的代码示例:
'Save workbook
ChDir "Directory_Path"
ActiveWorkbook.SaveAs Filename:="File_Path\"Workbook_Name", _
FileFormat:=xlOpenXMLWorkbook
Application.Wait (Now + TimeValue("00:00:08"))
ActiveWorkbook.Close False
Application.Wait (Now + TimeValue("00:00:03"))
'Delete names from list
Windows("LDS_Test.xlsm").Activate
Sheets("names").Select
Rows("3:3").Select
Selection.Delete Shift:=xlUp
最后,我知道它不是一个损坏的工作簿,因为我刚刚在一个新的,干净的工作簿中从头开始重建这个宏,希望新的构建可以解决这个问题。
有什么建议吗?