如何处理excel工作表中的数据更改事件以刷新所有数据透视表



我有一个VBA代码应用于工作表及其更改。因此,每当工作表中有新的条目或删除(任何更改(时,它都会刷新所有附加的数据透视表-

Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.RefreshAll
End Sub

(我对VBA或office脚本代码不是很熟悉,所以很抱歉出现基本问题。(

但这在excel网上不起作用。因此,我需要一个代码在excel在线代码编辑器(或typescript(中使用。到目前为止,我能够编写这个代码-

async function main(workbook: ExcelScript.Workbook) {
await Excel.run(async (context) => {
console.log("Adding Sheet OnChange Handler");
let mysheet = context.workbook.worksheets.getItem("Attendance");
mysheet.onChanged.add(ref);
await context.sync();
console.log("Added a worksheet-level data-changed event handler.");
}
)};
function ref(workbook: ExcelScript.Workbook) {
let selectedsheet = workbook.getActiveWorksheet();
selectedsheet.refreshAllPivotTables();
console.log("Pivot Refreshed.");
};

我收到一个错误找不到名称"Excel">,只要工作表中有任何更改,它就会工作,但事实并非如此。请帮我做这个。谢谢

我认为您在refreshAllPivotTables方法末尾缺少()

请尝试这个-

function main(workbook: ExcelScript.Workbook) {
workbook.refreshAllPivotTables(); // Refresh all pivot tables
}

正如@Daniel G.Wilson所回复的,这在脚本中是不可能的。所以我使用了Power Automate方法。

我在代码编辑器中编写了脚本并保存了它-

function main(workbook: ExcelScript.Workbook) {
let selectedsheet = workbook.getWorksheet("Pivot");
selectedsheet.refreshAllPivotTables();
console.log("Pivot Refreshed");
};

然后,我在Power Automate中创建了一个Scheduled流。步骤是-

  1. 创建新的计划流
  2. 说出一些名字
  3. 设置启动时间和间隔以自动运行
  4. 选择新步骤
  5. 选择Excel Online Business
  6. 选择"运行脚本">
  7. 选择文件位置和脚本名称
  8. 保存并测试流

它运行良好。谢谢

最新更新