宏工作簿和普通工作簿同时打开,计算式计算变慢的处理

通过豆包帮助,在宏工作薄中复制代码如下可以一定程度上解决。(能够实现,同时打开多个工作簿,并且普通工作簿能够实现自动重算,不会变慢。已实测)

// 失活事件:自动获取当前宏工作簿,禁用自动重算

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;

}

贵州省
浏览 261
收藏
5
分享
5 +1
+1
全部评论