2013-07-29 27 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 
相关问题