excel - 更改应用程序。在不同的 Excel 过程中计算

标签 excel vba windows-process

在 VBA 子例程中,我将值写入另一个在单独的 Excel 进程中运行的“目标”工作簿,如下所示:

Set xlWB = GetObject(STR_TARGET_WORKBOOK_FILENAME)
xlWB.Worksheets(STR_TARGET_SHEET).Range("B1").value = Now()
我想在向目标工作簿写入值时暂停计算。如果它在与此 VBA 相同的 Excel 进程中运行,我可以执行 Application.Calculation = xlCalculationManual .
如何获取和设置 Application.Calculation目标工作簿正在运行的 Excel 进程中的模式?

最佳答案

外部工作簿对象也将引用其应用程序,因此我们可以简单地执行以下操作:

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

关于excel - 更改应用程序。在不同的 Excel 过程中计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66589702/

相关文章:

vba - 使用箭头键导航时将鼠标指针移至事件单元格的中心

vba - 从Excel VBA中的控制按钮名称(名称属性)重命名

python - 不要将 nan 值写入 Excel 工作表

excel - 当用户在 Excel 中启用宏时触发我的宏代码

c# - 如何使用 C# 结束进程

excel - 编写 VBA 代码以求几何平均值

vba - 从命令行使用路径名作为参数时出现 Excel 错误

vba - 在文档中查找字符串并删除其后的所有内容

c++ - 如何查看 Microsoft Windows 10 的(默认)页面大小?

c - 从 32 位进程获取 64 位进程的命令行字符串