使用VBA命令打开工作簿(自动模式),无需重新计算
在我的VBA使用VBA命令打开工作簿(自动模式),无需重新计算,vba,excel,Vba,Excel,在我的VBAaddin.xlam中,我使用工作簿.Open(“C:\f.xlsm”)打开工作簿f.xlsm。f.xlsm的工作簿计算模式是Automatic,因此我意识到在调用工作簿后,f.xlsm中的所有内容都会自动重新计算。打开(“C:\f.xlsm”)。但这不是我想要的 即使工作簿的模式是“自动”,也可以通过VBA命令打开工作簿而不刷新它吗 编辑1: 我尝试了@Ripster建议的想法: 1) 我在addin.xlam中创建了一个类模型CExcelEvents: Private WithE
addin.xlam
中,我使用工作簿.Open(“C:\f.xlsm”)
打开工作簿f.xlsm
。f.xlsm
的工作簿计算模式是Automatic
,因此我意识到在调用工作簿后,f.xlsm
中的所有内容都会自动重新计算。打开(“C:\f.xlsm”)
。但这不是我想要的
即使工作簿的模式是“自动”,也可以通过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
(触发自动重新计算),然后将其计算模式更改为手动。在更改模式之前已重新计算工作簿-太晚了!有人知道吗 打开工作簿之前,请尝试将XLCalculation设置为手动:
Sub try()
Application.Calculation = xlCalculationManual
workbooks.Open ("C:\f.xlsm")
End Sub
我不确定这是否有效,但您可以订阅工作簿事件并取消计算。描述如何订阅事件。嗯,我无法将VBA宏更改/添加到
f.xlsm
,因此我认为它不起作用…仅在打开之前设置Application.Calculation=xlCalculationManual
,是行不通的。我在addin.xlam
中尝试了该命令,但它返回了一个错误,我认为与打开的工作簿不同,addin.xlam
不知道该命令与哪个工作簿有关……我使用了在外接程序中链接的方法订阅打开事件,以便每次打开工作簿时都可以运行一些代码。我不明白为什么这对你目前的情况不起作用。该方法不需要添加到f.xlsm,而是添加到xlam加载项文件中。它将为您提供一个对象,可以订阅您打开的每个工作簿的事件。