在运行该子程序时,我在某个地方遇到问题。我通过另一个子程序调用它,但是我的整个PC在此例程期间崩溃了。
1-有一种方法可以比我现有的方法进一步简化它,并且
2-在此之前,我找不到删除存储在存储器中的任何内容的命令,或者在适当的地方可以在此代码中插入类似的内容。
Sub Splitbook()
Dim xPath As String, xWs As Worksheet, Box As String
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Box = Application.InputBox("Set?")
For Each xWs In ActiveWorkbook.Sheets
If xWs.Name <> "Master" Then
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & " " & Box & ".xlsx"
Application.ActiveWorkbook.Close False
Else
End If
Next
Application.DisplayAlerts = True
End Sub
如果这不是一个合适的话题,请先抱歉。
答案 0 :(得分:1)
我建议您尝试使用VBA.DoEvents。自打开和关闭excel工作簿以来,可能由于使用大量系统内存而出现问题。当您流通的工作簿过多时,原始的excel就会变成“不响应” 使用VBA.DoEvents可能会降低整体速度,但应防止原始工作簿“不响应”
For Each xWs In ActiveWorkbook.Sheets
If xWs.Name <> "Master" Then
vba.DoEvents
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & " " & Box & _
".xlsx"
Application.ActiveWorkbook.Close False
Else
End If
Next