0
在我的VBA addin.xlam
中,我使用workbooks.Open("C:\f.xlsm")
打开工作簿f.xlsm
。 f.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
(它会触发自动重新计算),然后将其计算模式更改为手动。在改变模式之前,工作簿已经被重新计算了 - 太迟了!有人有什么主意吗?
我不知道这是否会工作,但你也许可以订阅工作簿事件并取消计算。 [本网站](http://www.cpearson.com/excel/appevent.aspx)介绍了如何订阅这些活动。 – Ripster
好吧,我不能更改/添加VBA宏到'f.xlsm',所以我不认为它会工作... – SoftTimur
在打开之前只需设置Application.Calculation = xlCalculationManual将不起作用? – mattboy