0

在我的 VBAaddin.xlam中,我使用workbooks.Open("C:\f.xlsm")打开工作簿f.xlsm。的工作簿计算模式f.xlsmAutomatic,因此我意识到f.xlsm调用后会自动重新计算中的所有内容workbooks.Open("C:\f.xlsm")。但这不是我想要的。

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

编辑1:

我尝试了@Ripster 建议的想法:

CExcelEvents1)我创建了一个类模型addin.xlam

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)我链接CExcelEventsaddin.xlam打开的代码f.xlsm

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

然后,try()结果是首先打开f.xlsm(触发自动重新计算),然后将其计算模式更改为手动。工作簿在改变模式之前已经重新计算了——太迟了!有人有什么主意吗?

4

1 回答 1

0

在打开工作簿之前立即尝试将 XLCalculation 设置为 Manual:

Sub try()
    Application.Calculation = xlCalculationManual
    workbooks.Open ("C:\f.xlsm")
End Sub
于 2013-07-30T08:48:11.220 回答