我有一个宏可以在特定文件夹中的新工作簿中保存三个特定工作表。每次我需要保存大约20-30个工作簿。但是,我可以看到每次调用宏时,在下面的任务行中生成一个新的工作簿并跟随一些新的工作簿(到目前为止它就像1500 + - ),创建一个新的工作簿,然后它被关闭等等。整件事需要太多时间。如果我必须同时生成20个新工作簿,则需要30秒或更长时间。有什么方法可以让它更快吗?
Sheets(Array("Statement", "Current Run", "Stock")).Copy
ActiveWorkbook.SaveAs Filename:="C:\solved\" & st & ".xlsx", Password:="",
WriteResPassword:="", ReadOnlyRecommended:=False
//Just adding some row before closing
finalLine.Copy
ActiveWorkbook.Sheets("Current Run").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial
ActiveWorkbook.Sheets("Current Run").Range("A2").CurrentRegion.Borders.LineStyle = xlContinuous
ActiveWorkbook.Close SaveChanges:=True
答案 0 :(得分:1)
如果减少对任何特定对象的调用次数,您可能会看到一些性能改进。在您的情况下,您正在对ActiveWorkbook
对象进行多次调用,这可以在With
块中处理,而正如其他人提到的那样,只使用一次Save
方法调用:
Sheets(Array("Statement", "Current Run", "Stock")).Copy
With ActiveWorkbook
//Just adding some row before closing
finalLine.Copy
With .Sheets("Current Run").
.Range("A1").End(xlDown).Offset(1, 0).PasteSpecial
.Range("A2").CurrentRegion.Borders.LineStyle = xlContinuous
End With
.SaveAs Filename:="C:\solved\" & st & ".xlsx", Password:="",
WriteResPassword:="", ReadOnlyRecommended:=False
.Close
End With
这是否会有明显改善,我不确定。除非你在循环中多次这样做,否则可能不会。但无论如何这都是好习惯。