在不同的 Excel 进程中更改 Application.Calculation
Change Application.Calculation in different Excel process
在 VBA 子例程中,我将值写入另一个在单独的 Excel 进程中运行的“目标”工作簿,如下所示:
Set xlWB = GetObject(STR_TARGET_WORKBOOK_FILENAME)
xlWB.Worksheets(STR_TARGET_SHEET).Range("B1").value = Now()
我想在向 Target 工作簿写入值时暂停计算。如果它是 运行 在与这个 VBA 相同的 Excel 过程中,我可以做 Application.Calculation = xlCalculationManual
.
如何在 Target 工作簿为 运行 的 Excel 进程中获取和设置 Application.Calculation
模式?
外部工作簿对象也将引用其应用程序,因此我们可以简单地执行以下操作:
Dim xlWB As Object
Dim calcMode As Integer
Set xlWB = GetObject(STR_TARGET_WORKBOOK_FILENAME)
' Get the Target's calculation mode
calcMode = xlWB.Application.Calculation
' Suspend calculation in the Target's Excel process
xlWB.Application.Calculation = xlCalculationManual
' ... do stuff to xlWB
' Restore whatever calculation mode was in that process
xlWB.Application.Calculation = calcMode
在 VBA 子例程中,我将值写入另一个在单独的 Excel 进程中运行的“目标”工作簿,如下所示:
Set xlWB = GetObject(STR_TARGET_WORKBOOK_FILENAME)
xlWB.Worksheets(STR_TARGET_SHEET).Range("B1").value = Now()
我想在向 Target 工作簿写入值时暂停计算。如果它是 运行 在与这个 VBA 相同的 Excel 过程中,我可以做 Application.Calculation = xlCalculationManual
.
如何在 Target 工作簿为 运行 的 Excel 进程中获取和设置 Application.Calculation
模式?
外部工作簿对象也将引用其应用程序,因此我们可以简单地执行以下操作:
Dim xlWB As Object
Dim calcMode As Integer
Set xlWB = GetObject(STR_TARGET_WORKBOOK_FILENAME)
' Get the Target's calculation mode
calcMode = xlWB.Application.Calculation
' Suspend calculation in the Target's Excel process
xlWB.Application.Calculation = xlCalculationManual
' ... do stuff to xlWB
' Restore whatever calculation mode was in that process
xlWB.Application.Calculation = calcMode