2013-07-29 28 views
0

在我的VBA addin.xlam中,我使用workbooks.Open("C:\f.xlsm")打開工作簿f.xlsmf.xlsm的工作簿計算模式爲Automatic,因此我意識到在調用workbooks.Open("C:\f.xlsm")後,f.xlsm中的所有內容都會自動重新計算。但這不是我想要的。通過VBA命令打開工作簿(模式自動),無需重新計算

即使工作簿的模式是Automatic,是否可以通過VBA命令打開工作簿而不刷新它?

編輯1:

我嘗試的想法@Ripster建議:

1)我在addin.xlam創建的類模型CExcelEvents

Private WithEvents App As Application 
Private Sub App_WorkbookOpen(ByVal Wb As Workbook) 
    Application.Calculation = xlCalculationManual 
End Sub 
Private Sub Class_Initialize() 
    Set App = Application 
End Sub 

2)我聯繫CExcelEvents到代碼在addin.xlam中打開f.xlsm

Private XLApp As CExcelEvents 
Sub try() 
    Set XLApp = New CExcelEvents 
    workbooks.Open ("C:\f.xlsm") 
End Sub 

然後,try()確實是第一次打開f.xlsm(它會觸發自動重新計算),然後將其計算模式更改爲手動。在改變模式之前,工作簿已經被重新計算了 - 太遲了!有人有什麼主意嗎?

+0

我不知道這是否會工作,但你也許可以訂閱工作簿事件並取消計算。 [本網站](http://www.cpearson.com/excel/appevent.aspx)介紹瞭如何訂閱這些活動。 – Ripster

+0

好吧,我不能更改/添加VBA宏到'f.xlsm',所以我不認爲它會工作... – SoftTimur

+0

在打開之前只需設置Application.Calculation = xlCalculationManual將不起作用? – mattboy

回答

0

嘗試XLCalculation設置爲手動打開工作簿之前:

Sub try() 
    Application.Calculation = xlCalculationManual 
    workbooks.Open ("C:\f.xlsm") 
End Sub 
相關問題