2015-10-20 70 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