2015-10-20 204 views
0

我在Excel中使用VBA工具,当我尝试通过VBA保存工具时,在没有其他工作簿打开的情况下,该工具将在10秒内保存。即使其他工作簿打开时,宏应在10秒内保存。当其他工作簿打开时宏运行速度非常缓慢

如果其他工作簿已打开,则保存工具需要10分钟以上的时间,但此工具/代码未链接到任何打开的工作簿。当我尝试通过VBA保存此工具时,我认为它正在计算其他工作簿中的所有公式,然后保存此工具。

我使用这个工具的频率很高,我不想在每次使用此工具时关闭所有其他工作簿。

可以解决这个问题吗?

+0

您能不能告诉我们一些代码? – Ian

回答

2

如果计算是造成这应该确认

放置在的ThisWorkbook模块的延迟

Option Explicit 

Private Sub Workbook_Open() 
    enableCalcs True 
End Sub 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    enableCalcs False 
End Sub 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    enableCalcs False 
End Sub 
Private Sub Workbook_AfterSave(ByVal Success As Boolean) 
    enableCalcs 
End Sub 

Private Sub enableCalcs(Optional ByVal opt As Boolean = True) 
    Dim wb As Workbook, ws As Worksheet 

    Application.Calculation = IIf(opt, xlCalculationAutomatic, xlCalculationManual) 
    For Each wb In Workbooks 
     For Each ws In Worksheets 
      ws.EnableCalculation = opt 
     Next 
    Next 
End Sub 
+1

如果我添加下面提到的代码,那么仅在此工作簿中禁用自动计算。
**是否有禁用自动计算所有打开的工作簿代码?**
'私人小组Workbook_AfterSave(BYVAL成功作为布尔) Application.Calculation = xlCalculationAutomatic 结束小组 私人小组Workbook_BeforeSave(BYVAL SaveAsUI由于布尔,取消为布尔值) Application.Calculation = xlCalculationManual End Sub' – vbalearner

+0

有人可以告诉我**如何使用换行符**? – vbalearner

+0

**是否有一个VBA代码可以在保存之前禁用对所有打开的工作簿的自动计算并在保存后启用它?** – vbalearner