宏工作簿和普通工作簿同时打开,计算式计算变慢的处理
通过豆包帮助,在宏工作薄中复制代码如下可以一定程度上解决。(能够实现,同时打开多个工作簿,并且普通工作簿能够实现自动重算,不会变慢。已实测)
// 失活事件:自动获取当前宏工作簿,禁用自动重算
function Workbook_Deactivate() {
try {
const app = Application;
// 关键:ThisWorkbook 就是代码所在的工作簿
const wb = ThisWorkbook;
// 全局保持自动重算
app.Calculation = -4105; // xlCalculationAutomatic
// 遍历所有工作表,禁用自动计算
const sheets = wb.Worksheets;
for (let i = 1; i <= sheets.Count; i++) {
sheets.Item(i).EnableCalculation = false;
}
console.log(`已禁用【${wb.Name}】自动重算`);
} catch (e) {
console.error("失活事件错误:", e);
}
}
// 激活事件:自动获取当前宏工作簿,恢复可计算状态
function Workbook_Activate() {
try {
const wb = ThisWorkbook;
const sheets = wb.Worksheets;
for (let i = 1; i <= sheets.Count; i++) {
sheets.Item(i).EnableCalculation = true;
}
console.log(`已恢复【${wb.Name}】可计算状态`);
} catch (e) {
console.error("激活事件错误:", e);
}
}
// 辅助函数:在普通函数中获取当前宏工作簿名
function 获取当前宏工作簿名() {
return ThisWorkbook.Name;
}