1

我正在尝试在 Office 脚本中重建一些 VBA 代码,因为我想通过 Microsoft Power Automate(以前的 Flow)自动执行。现在我在处理数据透视表的代码部分遇到了问题。在 VBA 代码中,我使用:

    Dim oWSHilfsPivot As Worksheet
    Set oWSHilfsPivot = ActiveWorkbook.Sheets("Hilfs_Pivots")

    With oWSHilfsPivot.PivotTables("PivotTable1").PivotFields("Projekt")
         .PivotItems("(blank)").Visible = True
    End With

自动过滤数据透视表: Excel_screenshot_pivot_table

如何重建 Office 脚本中的筛选?当我尝试使用集成的 Office Scripts Recorder 进行录制时,我得到:

function main(workbook: ExcelScript.Workbook) {
   // Unknown event received with eventId:153
}

因此,默认情况下,Office Scripts 似乎还不支持此功能。当然,变量的定义是有效的,过滤就是问题所在。;)

我很感激任何帮助。

4

1 回答 1

4

在数据透视表中,您需要: .getRowHierarchy & .getPivotItem,然后将可见性设置为 false(如下所示)。

下面的代码示例

newPivotTable.getRowHierarchy("Work Center")
  .getPivotField("Work Center").getPivotItem("DIM_INSP").setVisible(false);

数据透视表字段

function main(workbook: ExcelScript.Workbook) {
    // Add a new worksheet
    let sheet1 = workbook.addWorksheet();
    let selectedSheet = workbook.getWorksheet("New Sheet");
    // Add a new pivot table
    let newPivotTable = workbook.addPivotTable("PivotTable1", selectedSheet.getTable("MSRLoop"), sheet1.getRange("A3:C20"));
    // Add pivot field to a hierarchy
    newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Work Center"));
    // Change pivot position in a hierarchy
    newPivotTable.getRowHierarchy("Work Center")
      .setPosition(0);
    // Add pivot field to a hierarchy
    newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Order Type"));
    // Change pivot position in a hierarchy
    newPivotTable.getRowHierarchy("Order Type")
      .setPosition(1);
    // Add pivot field to a hierarchy
    newPivotTable.addDataHierarchy(newPivotTable.getHierarchy("Required Capacity"));
    // Change pivot position in a hierarchy
    newPivotTable.getDataHierarchy("Sum of Required Capacity")
      .setPosition(0);
    // Add pivot field to a hierarchy
    newPivotTable.addColumnHierarchy(newPivotTable.getHierarchy("Prdn Week"));
    // Change pivot position in a hierarchy
    newPivotTable.getColumnHierarchy("Prdn Week")
      .setPosition(0);


        //HERE IS HOW YOU FILTER IN A PIVOT TABLE

    newPivotTable.getRowHierarchy("Work Center")
      .getPivotField("Work Center").getPivotItem("DIM_INSP").setVisible(false);
    newPivotTable.getRowHierarchy("Work Center")
      .getPivotField("Work Center").getPivotItem("FIN_INSP").setVisible(false); 
    newPivotTable.getRowHierarchy("Work Center")
      .getPivotField("Work Center").getPivotItem("FLAT_INSP").setVisible(false);
    newPivotTable.getRowHierarchy("Work Center")
      .getPivotField("Work Center").getPivotItem("WELD_INSP").setVisible(false);
    newPivotTable.getRowHierarchy("Work Center")
      .getPivotField("Work Center").getPivotItem("(blank)").setVisible(false);
  }
  
于 2020-11-24T15:21:17.667 回答